今天有同学在在群里问了一道这个题:
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