繁体   English   中英

使用'use strict'的`jshint globalstrict:true`的目的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM