1. 程式人生 > >js面試:var x = 'c' function t (){} t()變數提升

js面試:var x = 'c' function t (){} t()變數提升

今天有同學在在群裡問了一道這個題:

var x = 'c'

function t (){

var x;

console.log(x);

var x = 'c';

console.log(x);

}

為什麼第一個輸出是undefined?

這道題有一個很大的迷惑點,function裡面有一個var x = 'c'外面也有一個var x = 'c';

下面解釋為什麼第一個輸出是undefined:

第一:var x ;

console.log(x) 這裡x本身就沒有賦值,輸出肯定是undefined

第二:如果你想用function裡面的var x = 'c',對不起,這裡會有兩步值得注意

第一,var x = 'c' 首先會變數提升,也就是把var x;提到function提到function最前面,然後在最後進行賦值(x = 'c'),和你原來寫的var x 的效果是一樣的

解釋一下如果用下function裡面的var x = 'c'為什麼會變數提升?

一開始的問題是,為什麼會輸出undefined?,注意這裡的輸出,首先你得有x ,不管你有沒有值,你得先把要輸出的變數告訴我,所以就變數提升了,至於你的值我是不關心滴

看圖:

 

x在最後賦值,所以輸出結果是undefined