var a,b=10 的经典问题 -- (变量作用域)
var a 有 var 会使得变量提升, 如果 b 没有声明 变量b 则为全部变量,不会提升
1.问题1
var a = b = 10;
(function(){
var a = b = 20
})();
console.log(b);
A.10 B.20 C.报错 D. Undefined
var a = b = 10; b没有声明,默认为全局变量,匿名函数立即执行,var a=b=20相当于var a=20;b=20;所以作为全局变量的b变成了20,a没变。b是隐形变量。
2. 以下代码的运行结果是 alert(a); a = 10; alert(a)
A.undefined 10 B.报错 10 C.报错 打印不出来 D.0 undefined
运行到报错语句后,后面的都不执行了,所以选C
- 以下代码运行的结果是
var num = 5;
function fn(){
num = 1;
}
fn();
alert( num );
A.1 B.undefined C.报错 D.5
执行fn()时,num未声明,向父级找,得到num=5,然后赋值num=1,因为改变的是函数外的值,所以num发生改变最后是1。
- 代码的输出结果是
var a = 3;
function fn(){
var b = 4;
alert(a); // 3
alert(b); //4
function me(){
alert(b); //4
}
me();
}
fn();
alert(a);//3
5、分析下段代码输出结果是
var t = 10;
function test(test){
t = t + test; //t=10+10
console.log(t); //20
}
test(t);
人生很漫长,或许我只是你人生中微不足道的一小段,只是你人生中的惊鸿一瞥。