分两个问题:1.while相当于是一个块级作用域。在块级作用域中定义的变量name是一个全局变量。所以输出的是obama。是这样理解的吗?2.之前定义的一个变量name='zach'。 之后在while中定义的name是把之前定义的name的覆盖掉了吗?还是说 ,只是把新的值 ‘obama’ 指向之前的name呢?求解惑更新:关于第二个问题,有点蒙蔽,有的说是替代了,有的说是更新name的值....我到底该如何抉择
1 回答
森林海
TA贡献2011条经验 获得超2个赞
1.while不是块级作用域,for也不算。JS的常用的块级作用域是函数,不常见的还有with/catch等。所以你可以默认JS除函数外是没有块级作用域的
2.引擎在执行var name='obama'这里时,会查找有无name定义,如果有定义就直接赋值。因此答案是指向之前的name
===================
第二个问题是更新,这与引擎的处理方式有关。
对于说替代的答案,你们想过变量提升吗?
等效代码:
var name;
var name;
name = 'zach'
name = 'obama'
告诉我这怎么替代?
添加回答
举报
0/150
提交
取消