JSLint突然报道:使用“use strict”的功能形式

时间:2010-12-16 15:36:40

标签: javascript jslint

我包括声明:

"use strict";

在我的大多数Javascript文件的开头。

JSLint之前从未对此提出过警告。但现在是,说:

  

使用“use strict”的功能形式。

有谁知道“功能形式”会是什么?

8 个答案:

答案 0 :(得分:980)

包含'use strict';作为包装函数中的第一个语句,因此它只影响该函数。这可以防止在连接不严格的脚本时出现问题。

请参阅Douglas Crockford的最新博文Strict Mode Is Coming To Town

该帖子的示例:

(function () {
   'use strict';
   // this function is strict...
}());

(function () {
   // but this function is sloppy...
}());

<强>更新 如果您不想包装立即函数(例如,它是节点模块),则可以禁用警告。

对于 JSLint (每Zhami):

/*jslint node: true */

JSHint

/*jshint strict:false */

或(每Laith Shadeed

/* jshint -W097 */

要禁用JSHint的任意警告,请查看JSHint source code中的地图(docs中的详细信息)。

更新2: JSHint 支持node:boolean选项。请参阅.jshintrc at github

/* jshint node: true */

答案 1 :(得分:216)

如果您正在为NodeJS编写模块,那么它们已经封装了。通过在文件顶部包含来告诉JSLint你有节点:

/*jslint node: true */

答案 2 :(得分:70)

我建议改用jshint

它允许通过/*jshint globalstrict: true*/禁止此警告。

如果您正在编写库,我建议使用global strict,如果您的代码被封装到模块中,就像nodejs一样。

否则,您会强制所有使用您图书馆的人进入严格模式。

答案 3 :(得分:17)

我开始在Cross Platform JavaScript博文后面创建一个Node.js / browserify应用程序。我遇到了这个问题,因为我全新的Gruntfile没有通过jshint。

幸运的是,我在Leanpub book on Grunt中找到了答案:

  

如果我们现在尝试,我们将扫描我们的Gruntfile ...并得到一些错误:

$ grunt jshint

Running "jshint:all" (jshint) task
Linting Gruntfile.js...ERROR
[L1:C1] W097: Use the function form of "use strict".
'use strict';
Linting Gruntfile.js...ERROR
[L3:C1] W117: 'module' is not defined.
module.exports = function (grunt) {

Warning: Task "jshint:all" failed. Use --force to continue.
     

这两个错误都是因为Gruntfile是一个Node程序,默认情况下JSHint不识别或允许使用moduleuse strict的字符串版本。我们可以设置一个接受我们的Node程序的JSHint规则。让我们编辑我们的jshint任务配置并添加一个选项键:

jshint: {
  options: {
    node: true
  },
}

node: true添加到jshint options,将jshint放入&#34;节点模式&#34;,为我删除了这两个错误。

答案 4 :(得分:15)

字符串形式没有天生的错误。

不要因为担心连接非严格的javascript而避免使用“全局”严格形式,而是修复该死的非严格javascript可能更为严格。

答案 5 :(得分:14)

使用以下内容在项目的根目录中添加.jslintrc文件(或jshint的.jshintrc文件):

{
    "node": true
}

答案 6 :(得分:0)

process.on('warning', function(e) {
    'use strict';
    console.warn(e.stack);
});
process.on('uncaughtException', function(e) {
    'use strict';
    console.warn(e.stack);
});

将此行添加到文件的开头

答案 7 :(得分:-4)

这是多么简单:如果您想严格要求所有代码,请在JavaScript开头添加"use strict";

但是如果您只想对某些代码严格要求,请使用函数表单。无论如何,我建议你在JavaScript的开头使用它,因为这将有助于你成为一个更好的程序员。