Javascript:获取“使用严格”错误

时间:2015-10-26 18:04:45

标签: javascript jquery html

我是Javascript的新手。我正在尝试向Chrome控制台吐出一些东西,但我在JBLint的Brackets中遇到了这些错误:

'$' was used before it was defined. $(document).on("ready", function() {
3   Expected exactly one space between 'function' and '('.  $(document).on("ready", function() {
4   Missing 'use strict' statement. console.log("Address Explorer JS up and running.");
4   Expected 'console' at column 5, not column 3.   console.log("Address Explorer JS up and running.");
4   'console' was used before it was defined.   console.log("Address Explorer JS up and running.");

这是JS代码:

"use strict";
/* address-explorer.js */

$(document).on("ready", function() {
  console.log("Address Explorer JS up and running.");
});

我尝试添加'Use Strict';文件顶部的语句,但这些错误不会消失,没有任何东西吐出到控制台。这是HTML:

<!DOCTYPE html>
<html>
<head>
    <title>My Address Explorer</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="./address-explorer.js"></script>
</head>
<body>
    <div class="container">
        <h1 class="twelve coloumns">
            Your Account
        </h1>
        <div class="five coloumns">
            <span id="displayed_balance" class="value">&nbsp;</span>
            <br><span class="label"> Total Balance</span>
        </div>
        <div class="four coloumns">
            <span id="transaction_count" class="value">&nbsp;</span>
            <br><span class="label"> Transactions</span>
        </div>
        <div class="two coloumns">
            <span id="blocks_mined_count" class="value">&nbsp;</span>
            <br><span class="label">Blocks Mined</span>
        </div>
        <h4 class="twelve columns">Activity</h4>
    </div>
</body>
</html>

帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

这些看起来像lint错误 - 如果是这样,您需要指定开发模式。一些常量全局变量如控制台或窗口将抛出此错误。忽略它。

我不确定为什么on("ready"不起作用 - 这就是内部调用.ready()的内容。我正在努力寻找原因。有关代码工作的示例,请参阅此fiddle

$(document).on("ready", function() {

应该是

$(document).ready(function() {

答案 1 :(得分:0)

这只是修复linting问题的一种方法,但你应该把你的JS放到Immediately Invoked Function中,并声明函数范围可以使用"use strict";

此外,将jQuery作为IIF的依赖项传递,并使用jslint指令告诉jslint您期望的是什么。在我们的例子中,我们说我们正在使用浏览器browser:true,这意味着document和许多其他浏览器特定的全局变量将通过定义的linting。 devel: true表示也应该考虑定义console

如果你在这个源之前包含jQuery,你有一个外部全局jQuery,所以你需要告诉jslint也期望这样。我们使用/*global ...*/指令执行此操作。

/*jslint browser:true, devel: true*/
/*global jQuery*/
(function ($) {
    "use strict";

    $(document).on("ready", function () {
        console.log("Address Explorer JS up and running.");
    });
}(jQuery));