search

Home  >  Q&A  >  body text

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

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

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

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

伊谢尔伦伊谢尔伦2897 days ago517

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-10 14:24:46

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

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

    reply
    0
  • PHPz

    PHPz2017-04-10 14:24:46

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

    reply
    0
  • 黄舟

    黄舟2017-04-10 14:24:46

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

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

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

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

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

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

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

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

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

    reply
    0
  • Cancelreply