代码之家  ›  专栏  ›  技术社区  ›  Rajat

有没有理由用大括号包装匿名的javascript函数?

  •  4
  • Rajat  · 技术社区  · 16 年前
    var a = function () {
        return 'test';
    }();
    
    console.log(a);
    

    第一种情况下的回答:测试

    var a = (function () {
        return 'test';
    })();
    
    console.log(a);
    

    第二种情况下的回答:测试

    我使用第一种方法来创建自执行函数。然而,我也看到了第二种方法。这两种方法有什么不同吗?结果显然是一样的。

    3 回复  |  直到 9 年前
        1
  •  11
  •   Community Mohan Dere    9 年前

    只有将函数执行结果赋给变量时,第一个语法才有效,如果只想执行函数,则此表单将是一个语法错误:

    function(){
       return 'test';
    }();
    

    另一种形式仍然有效,尽管:

    (function(){
        return 'test';
     })();
    

    因此,第二个版本更加灵活,可以更加一致地使用。

    (第一个表单不是有效的语法 avoid ambiguities in the Javascript grammar )

        2
  •  1
  •   William    16 年前

    是的,第一个变量将变量A设置为匿名变量,而第二个变量将变量A设置为函数的结果。

    编辑:我读错了第一个代码。答案是否定的。

        3
  •  0
  •   CodeDreamer68    13 年前

    为了可读性,最好将IIFES(立即调用的函数表达式)括在括号中(但不是必需的)。如果函数很长,读者看不到结尾,则左括号会提醒读者注意这个函数表达式中有一些特殊的内容,并强制他们查看底部以了解它是什么。