function aaa(){
var a=b=10;
}
aaa();
alert(b);
alert(a);运行代码 b的值为10,而a is not defined;疑惑:a和b同为定义在aaa()函数里的局部变量。为何b为10、而a报错?
5 回答
已采纳
qq_迈巧克力_0
TA贡献2条经验 获得超2个赞
函数会开辟出一个新的作用域,在这个作用域里可以新创建变量,也就是里面的a,b。
但这里有个特殊情况,
var a=b=10;
这种写法中a是局部变量没有问题,但b会当做全局变量去创建,所以就使得b可以在aaa函数之外被调用,而a作为一个局部变量,会在aaa函数返回后销毁,所以无法被alert。
Bossen
TA贡献13条经验 获得超4个赞
这个是变量声明提升好不好!(hoisting)
上面的变量声明实际上是这样的:
var a,b;
a=b;//把b的值赋给a,此时b没有值,那么a就是undifined
b=10;
javascript中把除了在函数中声明的变量以及没有用var声明的变量作为全局变量,此处的b典型的是函数内的局部变量,比如:function add(){
a=10
}//此处的a就是全局变量,随时可以调用。
千万别搞错了!这是初学者经常犯的错误!把这些小细节消化了,冲击百万年薪吧。哈哈
添加回答
举报
0/150
提交
取消