通常在阅读JavaScript源代码时,我会在顶部看到这两行.
/* jshint globalstrict: true */
'use strict';
Run Code Online (Sandbox Code Playgroud)
现在,我很清楚的目的'use strict';.有人可以告诉我为什么jshint globalstrict包括在内?
小智 5
JSHint(从分叉的JSLint)是一种流行的" 绒毛检查 "这是对JavaScript代码运行.它不会执行或修改代码,而是对其进行分析并报告它发现的各种不同的潜在错误或不良做法.
如果您'use strict';在JavaScript文件的顶部,在任何JavaScript函数之外,它将为整个文件启用严格模式.默认情况下,JSHint会在发现此情况时报告警告.
'use strict';
window.permissions = null;
function initialize() {
window.permissions = 0;
}
Run Code Online (Sandbox Code Playgroud)
Warnings
1: Use the function form of "use strict".
Run Code Online (Sandbox Code Playgroud)
这是因为许多人在将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;
}
Run Code Online (Sandbox Code Playgroud)
如果在您的情况下可能发生这种情况,您应该避免'use strict';在文件的顶层.您可以在自动执行功能中使用整个文件以避免串联的副作用.
(function() {
'use strict';
window.permissions = null;
function initialize() {
window.permissions = 0;
}
}());
Run Code Online (Sandbox Code Playgroud)
但是,如果您确定不需要担心串联并且不想修改代码,则globalstrictJSHint 的选项将禁用此警告.它也可以指定使用JSHint选项.jshintrc文件或--config命令行标志,但在许多情况下,这种"串列式结构",你看到,使用中的注释文件是最容易.
/* jshint globalstrict: true */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |