function test(){
var a = b =1;
}
test();
console.log(b);
为何这里能打印出1,怎么成了全局变量了,不是在函数体内的嘛?
var a = 1,b =1;
这样就打印不出来了
function test(){
var a = b =1;
}
test();
console.log(b);
为何这里能打印出1,怎么成了全局变量了,不是在函数体内的嘛?
var a = 1,b =1;
这样就打印不出来了
1.JavaScript可以不用var关键字声明变量,直接为变量赋值,这叫隐式声明。
function test(){
var a = b =1;
}
test();
console.log(b);
本例中,b由于在作用域中没有声明,会到作用域外查找,作用域外会有一个window.b = undefined
2.正确理解变量赋值和函数作用域。
function test(){
var a=1 , b =1;//中间是逗号运算符,逗号运算符可以实现连续运算,如此处多个变量连续赋值
}
test();
console.log(b);
本例中,b声明在函数内,函数外console.log(b)
作用域并没有声明b变量,同时console.log(b)
外无作用域,已是顶层作用域。因此会报b未声明。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
var a = b = 1
这里
a
是用var
声明的,但是b
不是。所以对b
的赋值就是全局的b
。var a = 1, b = 1
,这里a
,b
都是用var
声明的。所以都是函数内部的。