JS中好几个JS圆括号相连的这种叫啥?

图片描述

刚学JS,图中那段(function(){

f();

})();
完全不明白为什么里面的function要用圆括号括上,后面为什么又加了一对圆括号
或许这问题很基础,但我真的不知道到底是啥
求告诉我该问题的关键字,我去谷歌或者百度都行

谢谢大家!只能选择一个答案!TAT

回复
阅读 2.5k
4 个回答

这么做是的目的为了防止变量污染或者不想让外部访问从而保护变量,这里的做法的术语叫立即执行函数。实例:

//比如在某个a.js文件有个变量名叫$(jquery暴露出来的对象就叫$);
//然后你在引入这个js文件后又引入一个b.js,内容如下:
var $ = 'I am b.js';
console.log($)

//然后又在b.js后引入c.js,内容如下:
var $el = $('xxx'); //当你试图使用a.js中$下的方法时,发现报错了,因为$被b.js重新赋值了

解决办法就是让b.js的变量被包裹起来:

(function(){
var $ = 'I am b.js';
console.log($)
})()

由于在b.js的变量被函数的作用域包裹起来了,不能被外部访问到,所以c.js访问的是在全局作用域的$,就能按预期拿到$,又不影响b.js的正常执行。

另外简单的解释一下立即执行函数:

//第一个括号的作用是输出一个函数
var b = (function(){var $="b.js";console.log($)})
console.log(b); // =>ƒ (){var $="b.js";console.log($)}

//第二个括号是执行这个方法,相当于:
b() // =>(function(){var $="b.js";console.log($)})()

立即执行函数 IIFE

IIFE (立即调用函数表达式) 是一个 JavaScript函数 ,它会在定义时立即执行。

推荐问题
宣传栏