怎样给变量赋值_彻底理解javascript的连续(链式)赋值原理和陷阱
前置知识 : js的运算符优先级和关联性 赋值运算符(assignment operator)基于右值(right operand)的值,给左值(left operand)赋值。所有的运算符优先级看MDN官方文档 运算符优先级developer.mozilla.org连续(链式)赋值运算符 即 var a = b = c;实际上相当于var a = (b = c);分析一下这行代码 :js引擎先
·
前置知识 :
- js的运算符优先级和关联性
所有的运算符优先级看MDN官方文档
运算符优先级developer.mozilla.org
连续(链式)赋值运算符 即
var a = b = c;
实际上相当于
var a = (b = c);
分析一下这行代码 :
- js引擎先去作用域链找b这个变量, 如果找到则使用这个b , 如果找不到则抛错(严格模式下) 或者在window作用域下创建一个全局变量b(非严格模式) , b = c 其实是一个 赋值表达式 , 它是有返回值的 , 返回的就是c本身;
注意 : 如果使用声明关键字(let , var , const)则不是一个赋值表达式 , 因为声明关键字不能出现在圆括号等表达式中 , 只能出现在块作用域顶层和函数作用域顶层;
2. 将(b = c)表达式的返回值给a的右侧, 即(不完全是)相当于var a = c ;
OK , 到这里前置基础知识讲解完了 , 接下来是进阶知识
当连续赋值运算符出现在引用数据类型时会怎样 ?
更多推荐

所有评论(0)