JavaScript 中复合赋值运算符有哪些
javascript 中的复合赋值运算符包括加法、减法、乘法、除法、取模、幂运算、左移、右移、无符号右移、按位与、按位异或和按位或,共12种。它们将二元运算与赋值结合,例如 a += b 等价于 a = a + b,但能避免重复计算左侧表达式,并在某些情况下改变类型转换的行为。

哪些运算符会触发隐式类型转换
在 JavaScript 中,算术类复合赋值运算符(如 +=、-=、*=、/=)会触发隐式类型转换,而位运算类(如 &=、|=、)则会将操作数强制转换为32位整数。这意味着当左侧变量为字符串时,<code>+= 执行拼接,而其他算术运算符尝试转为数字;若转换失败则得到 NaN。

let num = 5; num += 3; // 8, number let str = '5'; str += 3; // '53', string concatenation str /= 2; // 2.5, converted to number first let bit = 5; bit &= 3; // 1, bitwise AND on integers
幂运算赋值符 **= 的行为特点是什么
**= 是 ES2016 引入的幂运算赋值运算符,它执行指数运算并赋值。与 = 不同,**= 严格遵循右侧结合性,且仅对数值类型有效。如果左侧不是可转换为数字的类型,会抛出 TypeError。它不触发位运算那样的32位截断,而是保持浮点精度。
立即学习“Java免费学习笔记(深入)”;

let base = 2; base **= 3; // 8 let invalid = 'abc'; invalid **= 2; // TypeError: Invalid left-hand side in assignment
基于程序中某个输入、条件或结果的具体问题
当使用 += 处理数组时,它会调用数组的 valueOf 或 toString 方法,导致意外拼接。例如 [1] += [2] 结果为 '12',因为数组被转为字符串。这种行为与对象类似,但不同于纯数字运算。开发者需注意左侧操作数的类型,以避免非预期的字符串拼接或 NaN 结果。


















