[英]Purpose of `jshint globalstrict: true` with 'use strict'
通常在阅读JavaScript源代码时,我会在顶部看到这两行。
/* jshint globalstrict: true */
'use strict';
现在,我非常清楚'use strict';
的目的'use strict';
。 有人可以告诉我为什么包含jshint globalstrict
吗?
JSHint (从分叉的JSLint )是一种流行的“ 绒毛检查 ”这是对JavaScript代码运行。 它不会执行或修改代码,而是对其进行分析并报告它发现的各种不同的潜在错误或不良做法。
如果你有'use strict';
在JavaScript文件的顶部,在任何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';
在文件的顶层。 您可以在自动执行功能中使用整个文件以避免串联的副作用。
(function() {
'use strict';
window.permissions = null;
function initialize() {
window.permissions = 0;
}
}());
但是,如果您确定不需要担心串联并且不想修改代码,则globalstrict
选项将禁用此警告。 也可以使用.jshintrc
文件或--config
命令行标志指定.jshintrc
选项,但在许多情况下,您在文件中使用注释看到的这种“内联配置”是最简单的。
/* jshint globalstrict: true */
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.