js變量提高

函數和變量的聲明老是會被解析器悄悄地被「提高」到方法體的最頂部bash

爲了更好的理解變量提高咱們看一段代碼:函數

console.log(a);
var a = 2;
複製代碼

控制檯輸出的是undefined,爲何控制檯沒有報錯而是輸出undefined?spa

由於解析器會在函數開頭處自動去聲明局部變量,局部變量都會被放在函數的入口處定義,因此上面的代碼實際會被解釋成下面的代碼:code

var a;
console.log(a);
var a = 2;
複製代碼

函數聲明也會提高的,可是函數表達式就不會提高,好比:cdn

fn1();
function fn1() {
	console.log('我是函數fn1');
}


fn2();
var fn2 = function() {
	console.log('我是函數fn2');
}

複製代碼

控制檯打印出以下:blog

綜上所述:在Javascript中,變量的聲明會被提高,而變量的賦值則不會。而函數的聲明是函數的聲明與函數體一塊兒提高ip

相關文章
相關標籤/搜索