【问题标题】:Using "use strict" but still get the warning使用“使用严格”但仍然收到警告
【发布时间】:2015-01-30 21:40:45
【问题描述】:

大家好,我正在尝试习惯使用 JSLint,但我收到了“使用严格”警告,在将其添加到函数后,我仍然收到缺少的“使用严格”语句

    fs.readFile('file', 'utf8', function (err, data) {
    if (err) { "use strict"; throw err; }
    var obj = JSON.parse(data);
  });

我很好奇我做错了什么?

【问题讨论】:

  • "use strict" 移动到内部函数的第一行(在 if 语句之前),这应该可以解决问题

标签: javascript jslint


【解决方案1】:

我对此不是 100% 肯定,但我只在给定 .js 文件的顶部使用过'use strict';,而不是嵌入到代码中。这样做后我没有收到警告。也许这就是 jslint 寻找它的地方。

此外,查看它的文档,use strict 的作用域应该是整个脚本(文件顶部)或给定函数(函数顶部,就在左大括号之后)。所以不管 jslint 的能力如何,这应该是固定的。

【讨论】:

    【解决方案2】:

    "use strict" 指令的位置是问题所在。

    用法:

    // Top of script file
    "use strict";
    /* ... code ... */
    

    或者:

    function b() {
      "use strict";
      /* ... code ... */
    }
    

    您在 if 分支的块内使用它。

    【讨论】:

    • 这不仅仅是常见的,而是规则! "use strict"; 必须是文件的第一条语句,或者函数的第一条语句才能生效。
    • @hobbs 是正确的 - 否则它会被 Web 浏览器简单地忽略并且功能执行不同。请修正这个答案。
    • 抱歉 -- 已删除评论;错过了您所说的“函数的第一个语句”。试图看看@BenjaminGruenbaum 不喜欢的alexfreiria 的回答有什么问题。 alexfreiria 的编辑只是将use strict 链接添加到MDN;我看不出答案有什么问题。
    • @ruffin alex 在本杰明发表评论后已经编辑了答案。 :)
    • 对,但请参阅上一条评论。 All he changed 在此处添加链接:["use strict"][1] 指令的位置是问题所在。 代码相同。 ?
    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多