代码之家  ›  专栏  ›  技术社区  ›  Samuel Hulla

在IIFE(自调用)表达式中包装“严格模式”是一个好的实践吗?

  •  1
  • Samuel Hulla  · 技术社区  · 7 年前

    我有一个非常简单的问题要问:
    把代码包装在 IIFE 每当我打算使用 use strict " ?


    现在,我明白了范围闭包的用处 (回答) here 在这里 ) 或许更好的是,prevelant模块的有用性 设计方法以及为什么IIFE是如此强大的工具 (不仅如此)在这些情况下,但这不是问题所在 关于。

    我注意到的是,大多数皮棉 (包括jsfiddle) 当你想在全局范围内使用严格模式时,一定要抱怨:

    enter image description here

    在生活中包裹这个街区似乎能阻止皮棉的抱怨

    (function(){
    	"use strict";
    	console.log("I compiled!");
    })();

    为什么要 use strict; 被关在生活中 ,或者这仅仅是一个“毫无根据的反对”,没有任何正当理由支持?

    2 回复  |  直到 7 年前
        1
  •  4
  •   T.J. Crowder    7 年前

    如果将多个脚本捆绑到一个文件中,则 "use strict"; 顶级品牌 全部的 一个文件中的脚本代码是strict的,如果捆绑的脚本不是设计成在strict模式下工作的,这可能会导致一些捆绑的脚本出现问题。(如果它们包含在 script 标签,只有在捆绑的情况下。)

    每当我打算使用 "use strict" ?

    如果你用的是捆扎机的话。如果没有,那就没什么关系了。不过,随着2015年 模块 变得更受支持,使用模块(现在可以使用捆绑器)将是更好的选择,而且不需要 “严格使用” 指令(ES2015+模块代码总是严格的)。

        2
  •  1
  •   MKougiouris    7 年前

    我想那是因为 use strict 在全球范围内定义,您将迫使所有第三方引用无法正常工作,除非它们也很严格。 现在,因为您没有能力保证所有加载的资源都将严格使用,所以您有可能引发问题。。。

    在范围内使用“strict”意味着范围所有者有责任知道其代码是否支持strict