Javascript 包装是一种好的做法吗;“严格模式”;在IIFE(自调用)表达式中?

Javascript 包装是一种好的做法吗;“严格模式”;在IIFE(自调用)表达式中?,javascript,compiler-warnings,strict,strict-mode,Javascript,Compiler Warnings,Strict,Strict Mode,我有一个非常简单的问题要问: 每当我打算使用“使用strict”时,将代码封装在 现在,我确实理解了范围关闭的有用性(回答 和 ) 或许更好的是,prevelant模块的实用性 设计方法以及为什么iLife是如此强大的工具 (不仅如此)在这些场景中,但这不是问题所在 大约 我注意到,当您想在全局范围内使用strict模式时,大多数linter(包括jsfiddle)都会抱怨: 将积木包裹在生活中似乎可以阻止衣匠抱怨 (函数(){ “严格使用”; log(“我编译了!”); })();如果将

我有一个非常简单的问题要问:
每当我打算使用“
使用strict
”时,将代码封装在


现在,我确实理解了范围关闭的有用性(回答 和 ) 或许更好的是,prevelant模块的实用性 设计方法以及为什么iLife是如此强大的工具 (不仅如此)在这些场景中,但这不是问题所在 大约

我注意到,当您想在全局范围内使用strict模式时,大多数linter(包括jsfiddle)都会抱怨:

将积木包裹在生活中似乎可以阻止衣匠抱怨

(函数(){
“严格使用”;
log(“我编译了!”);

})();如果将多个脚本捆绑到一个文件中,则一个
“使用严格”使该文件中的所有脚本代码变得严格,这可能会导致一些捆绑脚本出现问题,如果它们不是设计为在严格模式下工作的。(如果它们被不同的
script
标记包含,这不是问题,只有当它们被捆绑在一起时。)

每当我打算使用
“严格使用”
时,将代码封装在IIFE中是一种好的做法吗


如果您使用的是捆绑机,可能是。如果不是,那也没关系。然而,随着ES2015的模块越来越受支持,使用模块(您现在可以使用捆绑机)将是一个更好的选择,而且根本不需要
“use strict”
指令(ES2015+模块代码总是严格的)。

如果将多个脚本捆绑到一个文件中,则一个
顶部的“use strict”
会使该文件中的所有脚本代码变得严格,这可能会导致一些捆绑脚本出现问题,如果它们不是设计为在严格模式下工作的。(如果它们被不同的
脚本
标记包含,则这不是问题,只有当它们被捆绑时。)

每当我打算使用
“严格使用”
时,将代码封装在IIFE中是一种好的做法吗


如果您使用的是捆绑程序,可能会。如果不是,那就没什么大不了的。不过,随着ES2015的模块越来越受支持,使用模块(您现在可以使用捆绑程序)将是一个更好的选择,而且根本不需要
“use strict”
指令(ES2015+模块代码总是严格的).

我认为这是因为当
使用严格的
在全球范围内定义时,您将迫使所有第三方引用无法正常工作,除非它们也严格。 现在,因为您没有能力保证所有加载的资源都将严格使用,所以您有可能会造成麻烦


在作用域内使用“strict”意味着作用域的所有者有责任知道他的代码是否支持strict

我认为这是因为当
使用strict
在全球范围内定义时,您将强制所有第三方引用不能正常工作,除非它们也很严格。 现在,因为您没有能力保证所有加载的资源都将严格使用,所以您有可能会造成麻烦


在作用域内使用“strict”意味着作用域的所有者有责任知道他的代码是否支持strict

IIRC“use strict”作为顶级声明使一切都变得严格,并可能破坏第三方scripts@JaredSmith…如果这些第三方脚本与其中一个包含“use strict”的脚本捆绑在一起(如果在第三方脚本之前出现了带有“use strict”的脚本。)IIRC“use strict”作为顶级声明使所有内容都严格,并可能破坏第三方脚本scripts@JaredSmith…如果这些第三方脚本与其中一个包含“use strict”的脚本捆绑在一起(如果脚本包含“use strict“显示在第三方脚本之前。)