何时使用自动函数执行
When to use automatic function execution
对于下面的代码,我知道它是一个自动函数执行代码(我看到它被用在JQuery
)。
var f = function() {
// function body code
// ...
// ...
}();
我想了解的是它的用法。
在哪些情况下我们应该更喜欢使用上述语法?
我们使用上面的语法得到什么advantages/benefits?
"立即调用函数表达式" 是它的正确名称。而且它的用法很多,基本上它会紧紧包裹 scope
并且不允许外部范围访问它的 variable
除非我们有意这样做。
并且您可以使用它构建 singleton pattern
。单例模式的一个用法是修改data encapsulation
。喜欢 setters
和 getters
.
可能的使用情况:
<script src="someLibrary.js"></script> //And it uses a global variable called x
<script>
var x = 10; //Now at this situation,
//the x belongs to someLibrary will be overridden here.
</script>
所以为了避免这样的冲突,我们可以使用IIFE,
<script>
(function(){
var x = 10;
.
.
//Other codes goes here.
})();
</script>
对于下面的代码,我知道它是一个自动函数执行代码(我看到它被用在JQuery
)。
var f = function() {
// function body code
// ...
// ...
}();
我想了解的是它的用法。
在哪些情况下我们应该更喜欢使用上述语法?
我们使用上面的语法得到什么advantages/benefits?
"立即调用函数表达式" 是它的正确名称。而且它的用法很多,基本上它会紧紧包裹 scope
并且不允许外部范围访问它的 variable
除非我们有意这样做。
并且您可以使用它构建 singleton pattern
。单例模式的一个用法是修改data encapsulation
。喜欢 setters
和 getters
.
可能的使用情况:
<script src="someLibrary.js"></script> //And it uses a global variable called x
<script>
var x = 10; //Now at this situation,
//the x belongs to someLibrary will be overridden here.
</script>
所以为了避免这样的冲突,我们可以使用IIFE,
<script>
(function(){
var x = 10;
.
.
//Other codes goes here.
})();
</script>