首頁 >web前端 >js教程 >JavaScript函數宣告與變數宣告之間的差異分析

JavaScript函數宣告與變數宣告之間的差異分析

不言
不言原創
2018-09-11 15:14:341486瀏覽

這篇文章帶給大家的內容是關於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全域變數宣告與優缺點介紹

#

以上是JavaScript函數宣告與變數宣告之間的差異分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn