我最近读了很多Javascript,我注意到整个文件在要导入的.js文件中是像下面这样包装的。
(function() {
...
code
...
})();
为什么要这样做而不是简单的构造函数集呢?
我最近读了很多Javascript,我注意到整个文件在要导入的.js文件中是像下面这样包装的。
(function() {
...
code
...
})();
为什么要这样做而不是简单的构造函数集呢?
当前回答
这叫做闭包。它基本上将代码密封在函数内部,这样其他库就不会干扰它。这类似于在编译语言中创建名称空间。
的例子。假设我这样写:
(function() {
var x = 2;
// do stuff with x
})();
现在,其他库无法访问我在我的库中创建的变量x。
其他回答
这叫做闭包。它基本上将代码密封在函数内部,这样其他库就不会干扰它。这类似于在编译语言中创建名称空间。
的例子。假设我这样写:
(function() {
var x = 2;
// do stuff with x
})();
现在,其他库无法访问我在我的库中创建的变量x。
浏览器中的Javascript只有两个有效作用域:函数作用域和全局作用域。
如果一个变量不在函数作用域中,它就是在全局作用域中。全局变量通常是不好的,所以这是一个构造,以保持库的变量本身。
我们还应该在作用域函数中使用“use strict”,以确保代码应该在“严格模式”下执行。示例代码如下所示
(function() {
'use strict';
//Your code from here
})();
它被称为OOP中的封装。
提供一个接受的答案的例子,从https://requirejs.org/docs/whyamd.html:
(function () {
var $ = this.jQuery;
this.myExample = function () {};
}());
代码演示了我们可以:
在作用域中使用全局变量 导出函数、变量等。通过绑定this,也就是浏览器的窗口对象。