课程
/前端开发
/JavaScript
/JavaScript深入浅出
为什么这样设计?
2015-03-25
源自:JavaScript深入浅出 3-1
正在回答
这是语法规则决定的,其实是一个非常不好的设定。
至于为什么这么设定,这个就好像为什么你的名字就是这样。。。。因为就是这么起的。
Timi_Sakura
赋值是从右往左进行的,也就是说这一行先执行b=1,这时候b就是全局变量了,没有被var过。然后是var a = b;
a被声明了,是局部变量。
(function(){var a=b=5})();
console.log(b);
console.log(a);
为何b有值,a没有
林中飞虎
var a=b=1;计算优先级 创建全局变量b=1,再在函数中定义一个变量a,a=b
应为你赋值给a,b=1,是不存在的,var a=b=1,就可以等同于,b=1;var a=b;
旋律丶秋凉
是因为下一节提到的给未声明的变量赋值,此变量就变为全局变量?那么严格模式下应该不可以这样声明的吧。
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
6 回答怎么全是全局变量了?
1 回答关于全局变量
1 回答这里的this,为什么指向的是全局变量
2 回答在函数作用域里面 如果不用var这类的声名单单只是b=1 这样的b是在全局中声明的嘛?函数外面是不是也能访问的到这个b
3 回答全局变量的输出