function myFunction() {
function myInternalFunction() {
return 10;
}
return myInternalFunction();
function myInternalFunction() {
return 20;
}
}
alert(myFunction()); // What will this alert?
答案是20不同的功能
function myFunction() {
var myInternalFunction = function() {
return "Hello World.";
}
return myInternalFunction();
var myInternalFunction = function() {
return "Second Definition.";
}
}
alert(myFunction()); // What will this alert?
答案是 「你好爾德」。
爲什麼?爲什麼不是「第二定義」?
請參閱[var functionName = function(){} vs function functionName(){}](http://stackoverflow.com/q/336859/218196) –
爲什麼?因爲在第一個例子中你使用的是函數**聲明**而在第二個例子中你使用的是函數**表達式**。 –
關於您的編輯,這不等同於您之前的示例。你在第二次分配後調用'alert(a)'*,所以當然會提醒'two'。爲了使其等價於函數示例,您必須編寫'var a ='one'; alert(a)',var a ='two';'。 –