misty0304 / day-interview

前端每日一题,提倡每日学习与思考,每天进步一点!
13 stars 1 forks source link

【js】下面的代码将输出到控制台,为什么? #100

Open misty0304 opened 4 years ago

misty0304 commented 4 years ago
(function(){
  var a = b = 3;
})();

console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));
misty0304 commented 4 years ago

结果:a defined? false / b defined? true

首先,拆解var a = b = 3;

b = 3;
var a = b;

因此typeof a 是undefined, typeof b是number

以上是在非严格模式下,如果在严格模式(use strict)下,声明var a = b = 3;将产生一个运行时错误的ReferenceError: b is not defined