javascript小题目
/**
* 1. 变量作用域链
* 2. 当前宏任务执行完毕,立即执行微任务队列中的任务
*/
/**
* 题目1:
*/
var a = 1;
setTimeout(function () {
var a = 2;
console.log(a);
}, 0);
a = 0;
/**
* 题目2:
*/
var a = 1;
setTimeout(function () {
console.log(a);
var a = 2;
}, 10);
a = 0;
/**
*
* 分别输出什么呢?
*
* 别往下滑了,
*
* 该思考一下了...
*
* 我们一起来分析:
*/
/**
* 题目1:
*
* 因为var a = 2;
* 定义了局部变量a,并且赋值为2,根据变量作用域链,
* 全局变量处在作用域末端,优先访问了局部变量,从而覆盖了全局变量 。
* 所以输出> 2;
*
* 题目2:
* 因为var a = 2;
* 定义了局部变量2,同样覆盖了全局变量,
* 但是在console.log(a)之前a并未赋值,
* 所以输出> undefined;
*/