(function(){})(); 和 function(){}(); 的区别

阅读时长 2 分钟读完

在 JavaScript 中,使用立即执行函数可以创建一个独立的作用域,可以避免变量污染和命名冲突。而其中有两种写法:(function(){})();function(){}();。虽然它们看起来很相似,但是实际上有一些细微的差别。

区别

语法

(function(){})(); 是将一个匿名函数包裹在括号中,并立即调用该函数。而 function(){}(); 则是定义了一个匿名函数,然后立即调用该函数。

执行时机

(function(){})(); 在解析器读取到该行代码时就会立即执行。而 function(){}(); 则需要等到该行代码执行到函数定义位置时才会立即执行。

变量声明

(function(){})(); 内部的变量在外部无法访问,不会对全局作用域造成污染。而在 function(){}(); 中声明的变量会被添加到全局作用域中,可能会导致变量名冲突和不良影响。

示例代码

-- -------------------- ---- -------
-- -----------------
------------
  --- ------- - ------- --------
  --------------------- -- -- ------- -------
-----
--------------------- -- ---------- ---

-- ---------------
--- --- - ---
-----------
  --- --- - ---
  ----------------- -- -- --
----
----------------- -- -- --

结论

在实际开发中,我们应该尽量避免使用 function(){}(); 的写法,因为它可能会对全局作用域造成污染。而(function(){})(); 则是更加安全和规范的立即执行函数写法,可以减少变量冲突和命名污染的风险。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/29121

纠错
反馈