通常在阅读JavaScript源代码时,我会在顶部看到这两行。
/* jshint globalstrict: true */
'use strict';
现在,我非常清楚'use strict';
的目的。
有人可以告诉我为什么要包含jshint globalstrict
吗?
答案 0 :(得分:5)
JSHint(从JSLint分叉)是一种受欢迎的" lint checker"这是在JavaScript代码上运行的。它不会执行或修改代码,但会对其进行分析并报告各种不同的潜在错误或错误做法。
如果您的JavaScript文件顶部有'use strict';
,则在任何JavaScript函数之外,它将为整个文件启用严格模式。默认情况下,JSHint会在发现此情况时报告警告。
'use strict';
window.permissions = null;
function initialize() {
window.permissions = 0;
}
Warnings
1: Use the function form of "use strict".
这是因为许多人在将JavaScript文件发送给用户之前会自动将它们连接在一起,在这种情况下,顶级'use strict;'
会导致错误。例如,如果'use strict';
顶部有main.js
,并且它与非严格模式controls.js
连接,则无意中也会将严格模式应用于来自controls.js
的代码,可能会改变其行为。
// This code is fine on its own, but will break if strict mode is applied.
document.querySelector('.upgade').onclick = function() {
window.permissions = 0777;
}
如果在您的情况下可能发生这种情况,您应该避免在文件的顶层'use strict';
。您可以使用整个文件in a self-executing function来避免连接的副作用。
(function() {
'use strict';
window.permissions = null;
function initialize() {
window.permissions = 0;
}
}());
但是,如果您确定不需要担心串联并且不想修改代码,那么JSHint的globalstrict
选项将禁用此警告。它使用.jshintrc
文件或--config
命令行标志来指定JSHint选项also possible,但在很多情况下,这是"内联配置"你看到 - 在文件中使用评论 - 是最简单的。
/* jshint globalstrict: true */