在 ES12 中,JavaScript 引入了一种新的语法特性:赋值表达式。该特性使得变量声明、赋值操作和表达式求值可以在一个语句中完成,这极大地简化了代码的编写。
赋值表达式的语法
赋值表达式的语法如下:
variableName ||= expression; variableName ??= expression;
其中 ||=
表示或者赋值操作符,??=
表示空值赋值操作符。这两个操作符都是一个合并运算符,将左侧操作数和右侧操作数以指定操作符进行合并。
或者赋值操作符 (||=)
或者赋值操作符用于对左侧变量执行或者操作,如果该变量的值为假值(如 false、0、""、null、undefined、NaN),则将右侧的表达式的值赋给该变量。如果该变量的值不是假值,或者该变量未被声明,该操作符不会将右侧表达式的值赋给左侧的变量。
使用或者赋值操作符可以有效地降低代码的冗余度,例如:
const name = "" // 空字符串 name ||= "John"; // 如果 name 是假值,则将 "John" 赋给 name 变量 console.log(name); // "John"
空值赋值操作符 (??=)
空值赋值操作符用于对左侧变量执行空值检测,如果该变量的值为 null 或 undefined,则将右侧的表达式的值赋给该变量。如果该变量的值不是 null 或 undefined,或者该变量未被声明,该操作符不会将右侧表达式的值赋给左侧的变量。
使用空值赋值操作符可以避免在对对象属性或数组元素进行赋值时出现异常,例如:
let obj = {}; obj.foo ??= "bar"; // 如果 obj.foo 是空值(null 或 undefined),则将 "bar" 赋给 obj.foo console.log(obj.foo); // "bar"
总结
赋值表达式是 ES12 新增的语法特性,它可以将变量声明、赋值和表达式求值合并在一个语句中。使用或者赋值操作符可以简化代码,避免出现冗余度,使用空值赋值操作符可以在进行赋值操作时避免出现异常。该特性的引入将有利于提高代码的可读性和维护性。
参考资料
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6536357c7d4982a6ebe24578