首页 > js中这两种声明方式有什么区别吗?

js中这两种声明方式有什么区别吗?

var i = (function () {....} ())

var i = function () {....} ()

好吧,写的不够详细,我知道()等操作符是把声明转化为函数表达式
但我不明白第一种 在最外层加上(),不是多次一举了吗?为什么很多人这样写?


这是 自行执行函数表达式 的两种写法。

在第一种方法中,最外层的括弧是为了消除歧义的,其实压根就没必要,因为括弧本来内部本来期望的就是函数表达式,但是我们依然用它,主要是为了方便开发人员阅读。


声明函数后立即执行并把返回值赋给i


好吧,写的不够详细,我知道()等操作符是把声明转化为函数表达式
但我不明白第一种 在最外层加上(),不是多次一举了吗?为什么很多人这样写?

这个是匿名函数表达式,最外层加括号主要是受非匿名函数表达式影响吧

(function sayHello()  
{  
    alert("hello");  
}()); 

这种情况如果最外层不加括号,会解析成如下

function sayHello()  
{  
    alert("hello");  
};  
();  

当然下面这个会报错,但是如果括号中给传一个参数他就不报错了,所以下面这种写法是得不到预定的效果的

function sayHello()  
{  
    alert("hello");  
}(1);  

只有最外层加了括号才行,或者使用下面的写法

(function sayHello()  
{  
    alert("hello");  
})(1); 
【热门文章】
【热门文章】