对于下面的代码,我知道它是一个自动函数执行代码(我看到它在JQuery
中使用)。
var f = function() {
// function body code
// ...
// ...
}();
我想了解的是它的用法。
在哪种情况下我们应该优先使用上面的语法?
使用上述语法可以获得哪些优势/好处?
答案 0 :(得分:2)
“ 立即可调用的函数表达式 ”是它的正确名称。它的用法很多,基本上它会紧紧包裹scope
并且不允许访问其variable
到外部范围,除非我们故意这样做。
您可以使用它来构建singleton pattern
。 Singleton模式的一个用法是修改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>