【发布时间】:2018-08-03 13:39:10
【问题描述】:
我有一个非常简单的问题要问:
每当我打算使用“use strict”时,将代码包装在IIFE 中是一种好习惯吗?
现在,我明白 Scope Closure 的用处(已回答 here 和 here) 或者可能更好的是,曾经如此流行的模块的有用性 设计方法以及为什么 IIFE 是一个如此强大的工具 (不仅)在这些情况下,但这不是这个问题 关于。
我注意到,大多数 linter(包括 jsfiddle) 确实倾向于在您想在全局范围内使用严格模式时抱怨:
将块包裹在 IIFE 中似乎可以阻止 linter 抱怨
(function(){
"use strict";
console.log("I compiled!");
})();
是否有为什么要将use strict; 保留在IIFE 中的任何依据,或者这只是没有正当理由提出的“毫无根据的反对意见”?
【问题讨论】:
-
IIRC 'use strict' 作为顶级声明使一切变得严格并且可以破坏第 3 方脚本
-
@JaredSmith ..如果这些第三方脚本与其中包含“use strict”的脚本之一捆绑在一起(如果具有“use strict”的脚本出现在第三方脚本之前。)
标签: javascript compiler-warnings strict strict-mode