js變量提升&函數(shù)名提升&函數(shù)內(nèi)部變量提升

變量提升

JavaScript 引擎的工作方式是黑竞,先解析代碼捕发,獲取所有被聲明的變量,然后再一行一行地運(yùn)行很魂。這造成的結(jié)果扎酷,就是所有的變量的聲明語句,都會被提升到代碼的頭部遏匆,這就叫做變量提升(hoisting)法挨。

console.log(a); // undefined
var a = 1;

等價(jià)于

var a;
console.log(a);
a = 1;

冷知識:let變量也會提升。但是不允許在賦值之前使用幅聘。比如:
let a = 1 { a = 2; let a; }會報(bào)錯(cuò)凡纳。如果沒有提升,a=2應(yīng)該將外面的a賦值為2帝蒿。

函數(shù)名提升

同理

f(); // 1
function f() {
  console.log(1)
}

但是荐糜,如果采用賦值語句定義函數(shù),JavaScript 就會報(bào)錯(cuò)陵叽。

f(); // Uncaught ReferenceError: fun is not defined
let f = function() {
  console.log(1)
}

此時(shí)狞尔,函數(shù)等價(jià)于

var f;
f();
f = function () {};

如果同一個(gè)函數(shù)被多次聲明,后面的聲明就會覆蓋前面的聲明巩掺。

function f() {
  console.log(1);
}
f() // 2

function f() {
  console.log(2);
}
f() // 2

如果同時(shí)采用function命令和賦值語句聲明同一個(gè)函數(shù)偏序,最后總是采用賦值語句的定義。但是在賦值語句前采用的是function命令胖替。

f() // 2
var f = function () {
  console.log('1');
}
f() // 1
function f() {
  console.log('2');
}
f() // 1
函數(shù)內(nèi)部的變量提升

函數(shù)作用域內(nèi)部也會產(chǎn)生“變量提升”現(xiàn)象研儒。不管在什么位置命令聲明的變量豫缨,變量聲明都會被提升到函數(shù)體的頭部。

function foo(x) {
  if (x > 100) {
    var tmp = x - 100;
  }
}

等價(jià)于

function foo(x) {
  var tmp;
  if (x > 100) {
    tmp = x - 100;
  };
}

注:let聲明的變量同上文一樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末端朵,一起剝皮案震驚了整個(gè)濱河市好芭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冲呢,老刑警劉巖舍败,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敬拓,居然都是意外死亡邻薯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門乘凸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厕诡,“玉大人,你說我怎么就攤上這事营勤×橄樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵葛作,是天一觀的道長寿羞。 經(jīng)常有香客問我,道長赂蠢,這世上最難降的妖魔是什么稠曼? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮客年,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漠吻。我一直安慰自己量瓜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布途乃。 她就那樣靜靜地躺著绍傲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耍共。 梳的紋絲不亂的頭發(fā)上烫饼,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音试读,去河邊找鬼杠纵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钩骇,可吹牛的內(nèi)容都是我干的比藻。 我是一名探鬼主播铝量,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼银亲!你這毒婦竟也來了慢叨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤务蝠,失蹤者是張志新(化名)和其女友劉穎拍谐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馏段,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轩拨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅弧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片气嫁。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖够坐,靈堂內(nèi)的尸體忽然破棺而出寸宵,到底是詐尸還是另有隱情,我是刑警寧澤元咙,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布梯影,位于F島的核電站,受9級特大地震影響庶香,放射性物質(zhì)發(fā)生泄漏甲棍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一赶掖、第九天 我趴在偏房一處隱蔽的房頂上張望感猛。 院中可真熱鬧,春花似錦奢赂、人聲如沸陪白。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咱士。三九已至,卻和暖如春轧钓,著一層夾襖步出監(jiān)牢的瞬間序厉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工毕箍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弛房,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓霉晕,卻偏偏與公主長得像庭再,于是被迫代替她去往敵國和親捞奕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355