我包含了这个语句:
"use strict";
在我的大多数JavaScript文件的开头。
JSLint以前从未对此发出警告。但现在它发出了警告,提示:
使用"use strict"的函数形式。
有人知道什么是“函数形式”吗?
我包含了这个语句:
"use strict";
在我的大多数JavaScript文件的开头。
JSLint以前从未对此发出警告。但现在它发出了警告,提示:
使用"use strict"的函数形式。
有人知道什么是“函数形式”吗?
在包装函数中将'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是一个工具,用于帮助开发人员检查他们的JavaScript代码中的错误和潜在问题。
/*jshint strict:false */
或(根据Laith Shadeed)
/* jshint -W097 */
要禁用JSHint的任何警告,请查看JSHint源代码中的映射(详见文档)。
更新2:JSHint支持node:boolean
选项。请参阅在github上的.jshintrc
。
/* jshint node: true */
如果你正在为NodeJS编写模块,它们已经被封装了。告诉JSLint你已经有了node,只需在文件顶部包含:
/*jslint node: true */
/*jshint strict:false */
。 - bdukes"node": true"
。 - RyanM它可以通过/*jshint globalstrict: true*/
来抑制此警告。
如果您正在编写一个库,我只建议在您的代码封装成模块(如nodejs)时使用全局严格模式。
否则,您将强制每个使用您的库的人进入严格模式。
strict: 'global'
,请参见 http://jshint.com/docs/options/#globalstrict。 - Hovis Biddle我开始创建一个基于Node.js/browserify的应用程序,遵循Cross Platform JavaScript博客文章所述。但是我遇到了问题,因为我的全新Gruntfile没有通过jshint。
幸运的是,在Leanpub关于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
。我们可以设置一个JSHint规则来接受我们的Node程序。让我们编辑jshint任务配置并添加一个options键:
jshint: {
options: {
node: true
},
}
将node:true
添加到jshint的options
中,即可将jshint置于“Node模式”,这样我就可以消除两个错误。{
"node": true
}
字符串形式本身并没有任何问题。
与其因为担心拼接非严格JavaScript而避免使用“全局”严格模式,不如直接将该非严格JavaScript修复为严格模式。
process.on('warning', function(e) {
'use strict';
console.warn(e.stack);
});
process.on('uncaughtException', function(e) {
'use strict';
console.warn(e.stack);
});
将以下代码添加到文件的起始位置:
"use strict";
。
-1
。 - bevacqua"use strict";
。 - bdukes