欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

區(qū)別JavaScript函數(shù)聲明與變量聲明

 更新時(shí)間:2018年09月12日 16:05:16   投稿:laozhang  
這篇文章給大家分享了關(guān)于JavaScript中函數(shù)聲明與變量聲明之間的區(qū)別以及相關(guān)知識(shí)點(diǎn),有興趣的朋友參考下。

今天,又由一到題目引發(fā)了一場(chǎng)我跟JS基礎(chǔ)的較量:首先是

var getName = function(){alert(1)};
function getName(){alert(2)};
getName();// 1

or

function getName(){alert(2)};
var getName = function(){alert(1)};
 
getName();// 1

為什么我調(diào)換聲明順序,結(jié)果還是輸出以 var 形式聲明的函數(shù)的值?

有人回答我說(shuō) "啊,變量提升呀...",我最開(kāi)始的理解,就算變量提升,第一種情況提升之后,應(yīng)該是這樣?。?/p>

var getName;
getName = function(){alert(1)};
function getName(){alert(2)};

最后應(yīng)該輸出 2 才對(duì)啊(很理直氣壯)。

殊不知不只有var聲明才會(huì)提前,以function fn(){}這種形式聲明的函數(shù),會(huì)被提升到作用域的最最頂部,然后再是變量的提升。
具體請(qǐng)看下面例子:

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)}

足以說(shuō)明函數(shù)提升的更兇一些。

相關(guān)文章

最新評(píng)論