2
我測試了以下代碼:變量聲明在函數聲明之前是否有優先權?
(function(){
var x = false;
function x(){
return true;
}
return typeof x;
})();
它返回 「布爾」。只有當我評論第二行時:
(function(){
//var x = false;
function x(){
return true;
}
return typeof x;
})();
它返回「功能」。 這意味着如果某人之前在代碼的某處聲明瞭一個變量,那麼使用相同名稱的函數聲明將會失敗,對吧?請有人向我解釋。 謝謝!
不知道,謝謝! – paperstreet7
我希望函數聲明能夠轉換成首先寫入的函數表達式賦值?即代碼被視爲'var x; x =函數x(){...}; x = false; ...' – Bergi
@Bergi我覺得JavaScript引擎是免費的,但這兩者並不完全一樣。在function函數和形式參數的左括號之間的函數實例化中提供的名稱與函數中的代碼綁定,與函數中的代碼無關。它(類似於)Lisp中的'letrec'。 (不過,我不知道是否可以構建一個顯示差異的示例。) – Pointy