setTimeout(function(){
var a = null;
try {
console.log(a, 1)
a=123;
console.log(a, 2)
}catch(e) {}
console.log(a, 3)
ding();
}, 1000);
function ding(){
console.log(a, 4)// 这个地方的a为什么是undefined
}
你把A 放在 setTimeout 放在外面,就OK 了
a是局部变量,setTimeout()里面传入的匿名函数,a是匿名函数的局部变量
变量作用域是编写时定义的,而不是运行时定义的。
在编写ding()函数时无法找到a这个变量