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

  1. 以下代码运行的结果是
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。

  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);
posted on 2023-03-12 21:35  京鸿一瞥  阅读(221)  评论(0编辑  收藏  举报