dub*_*ech 12 javascript function iife
Stoyan Stefanov在JavasScript Patterns中说:"你需要一个直接的函数来将所有代码包装在其本地范围内,而不是将任何变量泄漏到全局范围"第70页.
这是他的榜样
(function() {
var days = ['Sun','Mon'];
// ...
// ...
alert(msg);
}());
Run Code Online (Sandbox Code Playgroud)
但肯定是因为天被定义为var,它只是功能范围?立即函数的唯一好处是立即调用函数.没有范围优势.Corrcet?
SRe*_*ect 13
如下所示,它不是关于立即执行的函数与常规函数的关系; 事实上,它几乎没有任何关系.
包装功能的唯一目的是防止创建事物(甚至暂时在全局范围内):
(function() {
// This variable is only available within this function's scope
var thisIsTemp = "a";
// ...
}());
console.log(thisIsTemp); // undefined
Run Code Online (Sandbox Code Playgroud)
VS:
// This variable is available globally
var thisIsTemp = "a";
// ...
console.log(thisIsTemp); // "a"
Run Code Online (Sandbox Code Playgroud)
从技术上讲,这是正确的(没有范围的好处,因为函数是立即的;一个普通的无聊函数也会这样做),但不要忘记
因此,该函数由于#2 而创建,但由于#1也会立即调用它.
| 归档时间: |
|
| 查看次数: |
8578 次 |
| 最近记录: |