var b = null;
setTimeout(function() {
b = 1;
}, 1000);
console.log(b); //null```
这种写法纯属是习惯问题,但往往忽视了异步和同步的执行顺序。要知道在JS中同步函数的执行永远比异步要快,也就是说console.log(b)先于setTimeout的callback执行,最后输出的当然是null。
这种同步和异步问题主要出现在请求后的callback中,可能如果真要赋值全局变量,并对赋值后的全局变量进行操作,建议都都写在请求后的callback中,可以封装成函数形式。
网友评论