在 JavaScript 中,使用立即执行函数可以创建一个独立的作用域,可以避免变量污染和命名冲突。而其中有两种写法:(function(){})();
和 function(){}();
。虽然它们看起来很相似,但是实际上有一些细微的差别。
区别
语法
(function(){})();
是将一个匿名函数包裹在括号中,并立即调用该函数。而 function(){}();
则是定义了一个匿名函数,然后立即调用该函数。
执行时机
(function(){})();
在解析器读取到该行代码时就会立即执行。而 function(){}();
则需要等到该行代码执行到函数定义位置时才会立即执行。
变量声明
(function(){})();
内部的变量在外部无法访问,不会对全局作用域造成污染。而在 function(){}();
中声明的变量会被添加到全局作用域中,可能会导致变量名冲突和不良影响。
示例代码
-- -------------------- ---- ------- -- ----------------- ------------ --- ------- - ------- -------- --------------------- -- -- ------- ------- ----- --------------------- -- ---------- --- -- --------------- --- --- - --- ----------- --- --- - --- ----------------- -- -- -- ---- ----------------- -- -- --
结论
在实际开发中,我们应该尽量避免使用 function(){}();
的写法,因为它可能会对全局作用域造成污染。而(function(){})();
则是更加安全和规范的立即执行函数写法,可以减少变量冲突和命名污染的风险。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/29121