這篇文章帶給大家的內容是關於JavaScript函數宣告與變數宣告之間的差異分析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
今天,又由一到題目引發了一場我跟JS基礎的較量:首先是
var getName = function(){alert(1)}; function getName(){alert(2)}; getName();// 1
or
function getName(){alert(2)}; var getName = function(){alert(1)}; getName();// 1
為什麼我調換宣告順序,結果還是輸出以var
形式宣告的函數的值?
有人回答我說"啊,變數提升呀...",我最開始的理解,就算變數提升,第一種情況提升之後,應該是這樣啊:
var getName; getName = function(){alert(1)}; function getName(){alert(2)};
最後應該輸出2 才對啊(很理直氣壯)。
殊不知不只有var
宣告才會提前,以function fn(){}
這種形式宣告的函數,會被提升到作用域的最最頂部,然後再是變數的提升。
具體請看下面例子:
fn();//Uncaught TypeError: fn is not a function var fn = function(){console.log(1)};
but
fn();//2 var fn = function(){console.log(1)}; function fn(){console.log(2)}
足以說明函數提升的更兇一些。
相關推薦:
javascript變數宣告實例分析_javascript技巧
以上是JavaScript函數宣告與變數宣告之間的差異分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!