我们应该或不应该在Javascript中的main函数内部函数声明后使用分号?

时间:2015-10-24 09:04:31

标签: javascript function

我遇到过多个例子,我在宣布一个函数后放置分号时感到困惑,因为函数在函数内部起作用,如下例所示

var myFunction = function() {
   var value = "parentValue";   

   function otherFunction() {
      var value = "childValue";
      console.log("Value is : "+value);
   }

   otherFunction();
}

myFunction();

即将分号放在 otherFunction ()声明的末尾。如果我保持;或不是它的工作。哪个是最好的做法?

2 个答案:

答案 0 :(得分:7)

函数声明不是语句。它们不以分号结束,您不应使用任何分号。

如果你在那里放了一个分号,它会在声明后被解析为一个空语句。

但是,并非所有函数定义都是语句。 myFunction是一个赋值函数表达式的变量,赋值是(应该)以分号结束的表达式(或变量声明)语句。

function otherFunction() {
    …
} // <-- no semicolon after declaration

var myFunction = function() {
    …
}; // <-- semicolon after assignment

另请参阅var functionName = function() {} vs function functionName() {}了解更多差异。

答案 1 :(得分:4)

请注意,匿名函数到myFunction的分配需要一个半冒号,在这种情况下不需要其他语句......

   var myFunction = function() 
   {
       var value = "parentValue"; // declaring a var so use semicolon

       function otherFunction() 
       {
          var value = "childValue"; // declaring a var so use semicolon
          console.log("Value is : "+value)
       } // is not being assigned to anything so no need for semicolon

       otherFunction()

    }; // declaring a var so use semicolon

    myFunction()

并且想一想如何使用模块模式......

var Module = (function(){

    var value = "parentValue";

    function _myFunction()
    {
        _otherFunction()
    } 

    function _otherFunction() 
    {
        var value = "childValue";
        console.log("Value is : "+value)
    }

    return{

        myFunction: _myFunction()
    }; // with semicolon

})(); // with semicolon

Module.myFunction;