skip to content
WNLee's Blog

看代码说输出1

/ 1 min read

题目考察的是JavaScript作用域

// 说出 a, b 的值
(function() { 
  var a = b = 5; 
})(); 

console.log(a, b);

答案是:undefined 5

  1. 有一个容易混淆的点 var a = b = 5 不在考察范围内,因此做调整,调整如下;
  // 说出 a, b 的值
  (function func() { 
    var a;
    a = b;
    b = 5; 
  })(); 

  console.log(a, b);
  1. 题目包含全局作用域和func的局部作用域,a通过var在func中声明,在func中操作仅作用于局部作用域;

  2. b在func局部作用域中未找到变量,在全局作用域中找,因此func中的修改针对全局作用域;

  3. 因此最终输出的是 undefined 5;