我最近读了很多Javascript,我注意到整个文件在要导入的.js文件中是像下面这样包装的。

(function() {
    ... 
    code
    ...
})();

为什么要这样做而不是简单的构造函数集呢?


当前回答

我们还应该在作用域函数中使用“use strict”,以确保代码应该在“严格模式”下执行。示例代码如下所示

(function() {
    'use strict';

    //Your code from here
})();

其他回答

除了保持变量在本地之外,一个非常方便的用法是在使用全局变量编写库时,可以给它一个更短的变量名,以便在库中使用。它经常用于编写jQuery插件,因为jQuery允许您使用jQuery. noconflict()禁用指向jQuery的$变量。如果它被禁用,你的代码仍然可以使用$,如果你只是这样做:

(function($) { ...code...})(jQuery);

它被称为OOP中的封装。

为了避免与同一窗口中的其他方法/库冲突, 避免全球范围,让它成为局部范围, 为了加快调试(本地范围), JavaScript只有函数作用域,所以它也有助于代码的编译。

我们还应该在作用域函数中使用“use strict”,以确保代码应该在“严格模式”下执行。示例代码如下所示

(function() {
    'use strict';

    //Your code from here
})();

这叫做闭包。它基本上将代码密封在函数内部,这样其他库就不会干扰它。这类似于在编译语言中创建名称空间。

的例子。假设我这样写:

(function() {

    var x = 2;

    // do stuff with x

})();

现在,其他库无法访问我在我的库中创建的变量x。