<script>
var a=1;//全局环境下,用var声明一个全局变量
var b=function(){a=3}();//函数内的a没有用var声明
alert(a);//a的值为3
alert(delete a)//false
</script>
“如果你没有使用严格模式并给一个未声明的变量赋值的话,JS会自动创建一个全局变量。以这种方式创建的变量,是全局对象的正常可配置属性,并可以删除它们。”--------犀牛书6版,58页。
var b=function(){a=3}() 内的a没有用var声明,那么应该创建一个可配置的全局变量。但是全局环境有一个变量a,并且是用var声明过的。
按照我这个初学者的认识:
var b=function(){a=3}() 内的a应该覆盖掉全局环境下a的值,并且a应该是可用delete删除的。情况a的值确实变为3了,但delete a却不可以,请问这是为什么?谢谢。
首先,上个例子:
好,从例子看以看出,未通过var声明的变量a和通过var声明的变量b,都可以通过this和window访问到,区别是一个可以被delete,一个不可以,下面分析下:
为什么delete的结果不同?
为什么他们都可以被this和window访问到?
下面说说你的例子