我遇到过多个例子,我在宣布一个函数后放置分号时感到困惑,因为函数在函数内部起作用,如下例所示
var myFunction = function() {
var value = "parentValue";
function otherFunction() {
var value = "childValue";
console.log("Value is : "+value);
}
otherFunction();
}
myFunction();
即将分号放在 otherFunction ()声明的末尾。如果我保持;或不是它的工作。哪个是最好的做法?
答案 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;