var i = 'abc';
functionmyloveName(){
alert(i);
var i = 'a';
}myloveName();
为什么这个代码的结果是:undefined
Bella
@bellalucky520
第二个和第一个代码区别在哪?
Dean
@Deangle
第二个函数调用相当于function (){ var i ; alert(i); i = 'a';}; 调用函数的时候,会先在函数内找var声明的变量,然后去函数外找,直到找到全局。第一个函数里没有var声明的变量,所以去函数外部,找到 var 声明的i变量,值为 abc。第二个函数调用的时候,在内部找到var 声明的变量,它会将var声明的变量提升到函数顶部,var i; 但是这个时候并没有赋值,alert的时候就是undefined。主要涉及到函数作用域和变量提升的问题,如果不懂可以看看这方面的一些知识点。