我包括声明:
"use strict";
在我的大多数Javascript文件的开头。
JSLint之前从未对此提出过警告。但现在是,说:
使用“use strict”的功能形式。
有谁知道“功能形式”会是什么?
答案 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不识别或允许使用
module
和use 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的开头使用它,因为这将有助于你成为一个更好的程序员。