变量作用域问题2(部分变量未声明)
例一
var x=10;全局变量(开辟空间)
function outer(){
x=20;//此处未声明变量(未开辟空间),只给全局变量声明了,此处赋值会把全局变量开辟的存储空间的值替换掉(全局变量中的x替换成20)。
function inner(){
x=30;//此处未声明变量(未开辟空间),只给全局变量声明了,此处赋值会把全局变量开辟的存储空间的值替换掉(全局变量中的x替换成30)。
alert(x);//3、输出x的值为30;
}
inner();//2.执行inner();
alert(x);//4、输出x的值为30;
}
outer();//1.执行outer();
alert(x);//5、输出x的值为30;
//结果:30 30 30
例二
var x=10;//全局变量(开辟空间1)
function outer(){
var x=20;//局部变量(开辟空间2)
function innter(){
x=30;//局部变量(未开辟空间),开辟空间2的x值被赋值为30
alert(x);//3.弹出innter()的局部变量x=30;
}
innter();//2.执行函数innter()
alert(x);//4.弹出outer()的局部变量x=30;
}
outer();//1、执行函数outer();
alert(x);//5.弹出全局变量x=10;
//结果:30 30 10