JavaScript中变量赋值的执行顺序是怎样的?
JavaScript 变量赋值执行顺序解答
针对你给出的示例代码var foo = document.sentence.split(',');,执行逻辑分为两个阶段,具体顺序如下:
- 首先是代码执行前的预解析阶段:JS引擎会先扫描当前作用域内的所有
var声明,提前创建foo变量并将其初始值设为undefined,这个阶段不会执行等号右侧的任何表达式逻辑。 - 之后进入代码逐行执行阶段:先计算等号右侧表达式的结果,也就是先获取
document.sentence的字符串值,再调用split方法按逗号拆分得到数组,最后才将这个运算结果赋值给已经创建完成的foo变量。
你可以通过下面的测试代码验证这个逻辑:
// 预解析阶段已经创建了foo变量,这里输出undefined而不是报「变量未定义」错误 console.log(foo); // 如果右侧表达式执行报错,赋值动作不会完成,但foo已经存在 var foo = undefined.split(','); // 这里仍然输出undefined console.log(foo);
内容的提问来源于stack exchange,提问作者equanimity
相关产品推荐
相关产品推荐

