javascript有个特性,叫声明提前,函数内声明的变量会提到最前面,局部变量又覆盖了全局变量,所以就是undefined
c=5;//声明一个全局变量cfunction test3(){ var c; //声明提前 window.c=3; console.log(c); //答案:undefined,原因:由于此时的c是一个局部变量c,并且没有被赋值 //var c; console.log(window.c);//答案:3,原因:这里的c就是一个全局变量c}test3();