alert(a);
var a=3;
按照变量提升我的理解是
var a;
alert(a);
a = 3;
这么理解就是undefined,但是结果是3,该怎么理解
备注补充:找到原因了,是因为执行了好几次,第一次执行确实是undefined,但是我执行了好几次,后面再执行的时候由于已经赋值了,所以导致都变成3,谢谢各位大侠
alert(a);
var a=3;
按照变量提升我的理解是
var a;
alert(a);
a = 3;
这么理解就是undefined,但是结果是3,该怎么理解
备注补充:找到原因了,是因为执行了好几次,第一次执行确实是undefined,但是我执行了好几次,后面再执行的时候由于已经赋值了,所以导致都变成3,谢谢各位大侠
js 执行之前会先生成一个作用域上下文其中只会定义var 的变量 参数 和function,所以var a; a的值此时是undefined,而后执行的时候 先执行了alert ,在执行赋值为3.
所以: 正解应该是alert出来的值就是undefined.
alert(a);
var a=3;
var a;
alert(a);
a = 3;
如果你是按照你提问的顺序输入到chrome中的话,确实是第一个是undefined,第二是3,因为你在第一个已经对a赋值了。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
首先chrome浏览器端试验了一下是undefined,并不是3,其次换用console.log在浏览器中和node环境中尝试,结果也是打印undefined。
补充一句如果是使用了let,那么就会形成死区,在node环境下会报错。