我附上以下声明:
"use strict";
在大多数Javascript文件的开头。
JSLint以前从未对此发出过警告。但现在它说:
使用“Use strict”的函数形式。
有人知道函数形式是什么吗?
我附上以下声明:
"use strict";
在大多数Javascript文件的开头。
JSLint以前从未对此发出过警告。但现在它说:
使用“Use strict”的函数形式。
有人知道函数形式是什么吗?
当前回答
包括“使用严格”;作为包装函数中的第一个语句,因此它只影响该函数。这可以防止在连接不严格的脚本时出现问题。
请看Douglas Crockford的最新博客文章《严格模式即将到来》。
例子来自那篇文章:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
更新: 如果你不想包装直接函数(例如,它是一个节点模块),那么你可以禁用警告。
片名:
/*jslint node: true */
JSHint:
/*jshint strict:false */
或者(如花蔽日)
/* jshint -W097 */
要禁用来自JSHint的任意警告,请检查JSHint源代码中的map(详细信息在文档中)。
更新2:JSHint支持node:boolean选项。参见github上的.jshintrc。
/* jshint node: true */
其他回答
我想大家都忽略了这个问题中“突然”的部分。很可能,你的.jshintrc有一个语法错误,所以它不包括'browser'行。通过json验证器运行它,查看错误在哪里。
它是如此简单:如果你想对你所有的代码都严格,添加“use strict”;在JavaScript的开头。
但如果您只想严格要求某些代码,请使用函数形式。无论如何,我建议您在编写JavaScript时使用它,因为这将帮助您成为更好的编码器。
process.on('warning', function(e) {
'use strict';
console.warn(e.stack);
});
process.on('uncaughtException', function(e) {
'use strict';
console.warn(e.stack);
});
将这些行添加到文件的起始点
字符串形式本身并没有什么问题。
与其因为担心连接非严格javascript而避免“全局”严格形式,不如直接将该死的非严格javascript修改为严格。
包括“使用严格”;作为包装函数中的第一个语句,因此它只影响该函数。这可以防止在连接不严格的脚本时出现问题。
请看Douglas Crockford的最新博客文章《严格模式即将到来》。
例子来自那篇文章:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
更新: 如果你不想包装直接函数(例如,它是一个节点模块),那么你可以禁用警告。
片名:
/*jslint node: true */
JSHint:
/*jshint strict:false */
或者(如花蔽日)
/* jshint -W097 */
要禁用来自JSHint的任意警告,请检查JSHint源代码中的map(详细信息在文档中)。
更新2:JSHint支持node:boolean选项。参见github上的.jshintrc。
/* jshint node: true */