赋值运算
在JavaScript中,赋值运算符用于将值赋给变量。除了基本的赋值运算符=外,还有一系列复合赋值运算符,它们可以结合数学运算和赋值操作。以下是JavaScript中常用的赋值运算符的小结:
常用赋值运算
1. 基本赋值运算符 (=)
1let a;
2let b = 5;
3a = b; // 将变量b的值赋给变量a
2. 加法赋值运算符 (+=)
将左侧变量与右侧表达式相加的结果赋值给左侧变量。
1let a = 10;
2a += 5; // 等价于 a = a + 5; 结果为 a = 15
3. 减法赋值运算符 (-=)
从左侧变量中减去右侧表达式的结果,并将新值赋给左侧变量。
1let a = 10;
2a -= 5; // 等价于 a = a - 5; 结果为 a = 5
4. 乘法赋值运算符 (*=)
将左侧变量与右侧表达式相乘的结果赋值给左侧变量。
1let a = 10;
2a *= 3; // 等价于 a = a * 3; 结果为 a = 30
5. 除法赋值运算符 (/=)
将左侧变量除以右侧表达式的结果赋值给左侧变量。
1let a = 10;
2a /= 2; // 等价于 a = a / 2; 结果为 a = 5
6. 模运算符 (%=)
将左侧变量与右侧表达式求模(取余数)的结果赋值给左侧变量。
1let a = 10;
2a %= 3; // 等价于 a = a % 3; 结果为 a = 1
7. 指数赋值运算符 (**=)
将左侧变量与右侧表达式求指数(幂)的结果赋值给左侧变量。
1let a = 2;
2a **= 3; // 等价于 a = a ** 3; 结果为 a = 8
8. 左移赋值运算符 («=)
将左侧变量的二进制表示向左移动右侧表达式指定的位数,并将结果赋值给左侧变量。
1let a = 1;
2a <<= 2; // 等价于 a = a << 2; 结果为 a = 4 (二进制 1 左移两位变成 10)
9. 右移赋值运算符 (»=)
将左侧变量的二进制表示向右移动右侧表达式指定的位数,并将结果赋值给左侧变量。
1let a = 4;
2a >>= 1; // 等价于 a = a >> 1; 结果为 a = 2 (二进制 100 右移一位变成 10)
10. 无符号右移赋值运算符 (»>=)
将左侧变量的二进制表示向右移动右侧表达式指定的位数,并在左侧填充0,将结果赋值给左侧变量。
1let a = -4;
2a >>>= 1; // 等价于 a = a >>> 1; 结果为 a = 2147483647 (二进制 11111111111111111111111111111111111)
使用场景
赋值运算符通常用于简化代码,通过一条语句完成计算和赋值操作。它们在处理累加、累减、乘法累积等场景中非常有用。
注意事项
- 操作数类型:赋值运算符会根据操作数的类型进行相应的计算。例如,
+= 会将字符串连接而不是进行数值加法。
- 链式赋值:赋值运算符可以链式使用,但可能会导致代码可读性降低,应谨慎使用。
示例代码
1let x = 10;
2x += 5; // x = 15
3x -= 3; // x = 12
4x *= 2; // x = 24
5x /= 4; // x = 6
6x %= 3; // x = 0
7x **= 2; // x = 0 (0的平方仍然是0)
练习题
-
加法运算:计算 5 + 3 的结果。
1let sum = 5 + 3;
2console.log(sum); // 输出:8
-
减法运算:计算 10 - 6 的结果。
1let difference = 10 - 6;
2console.log(difference); // 输出:4
-
乘法运算:计算 4 * 7 的结果。
1let product = 4 * 7;
2console.log(product); // 输出:28
-
除法运算:计算 20 / 5 的结果。
1let quotient = 20 / 5;
2console.log(quotient); // 输出:4
-
求余运算:计算 9 % 4 的结果。
1let remainder = 9 % 4;
2console.log(remainder); // 输出:1
-
幂运算:计算 2 ** 3 的结果。
1let power = 2 ** 3;
2console.log(power); // 输出:8
-
递增运算:给变量 x 赋值为 5,然后计算 x++ 的结果。
1let x = 5;
2let result = x++;
3console.log(result); // 输出:5
4console.log(x); // 输出:6
-
递减运算:给变量 y 赋值为 10,然后计算 y-- 的结果。
1let y = 10;
2let result = y--;
3console.log(result); // 输出:10
4console.log(y); // 输出:9
-
字符串连接:将字符串 "Hello, " 和 "World!" 连接起来。
1let greeting = "Hello, " + "World!";
2console.log(greeting); // 输出:Hello, World!
-
交换变量:不使用临时变量,交换 a = 5 和 b = 10 的值。
1let a = 5;
2let b = 10;
3a = a + b;
4b = a - b;
5a = a - b;
6console.log(a, b); // 输出:10 5
-
逻辑与运算:计算 true && false 的结果。
1let result = true && false;
2console.log(result); // 输出:false
-
逻辑或运算:计算 true || false 的结果。
1let result = true || false;
2console.log(result); // 输出:true
-
逻辑非运算:计算 !true 和 !false 的结果。
1let notTrue = !true;
2let notFalse = !false;
3console.log(notTrue, notFalse); // 输出:false true
-
比较运算:比较 5 > 3 和 5 < 3 的结果。
1let greater = 5 > 3;
2let less = 5 < 3;
3console.log(greater, less); // 输出:true false
-
等于和不等于运算:计算 5 == '5' 和 5 != '5' 的结果。
1let equal = 5 == '5';
2let notEqual = 5 != '5';
3console.log(equal, notEqual); // 输出:true false
-
三元运算符:使用三元运算符判断 x = 10 是否大于 y = 5,如果是输出 “x is greater”,否则输出 “y is greater or equal”。
1let x = 10;
2let y = 5;
3let result = x > y ? "x is greater" : "y is greater or equal";
4console.log(result); // 输出:x is greater
-
自增和自减运算:给变量 count 赋值为 0,计算 count++ 和 ++count 的结果。
1let count = 0;
2let result1 = count++;
3let result2 = ++count;
4console.log(result1, count, result2); // 输出:0 1 2
-
位运算符:计算 5 & 3(按位与)的结果。
1let result = 5 & 3;
2console.log(result); // 输出:1 (二进制 101 & 011)
-
类型转换:将字符串 "123" 与数字 456 相加的结果。
1let result = "123" + 456;
2console.log(result); // 输出:123456
-
短路运算:使用逻辑与和逻辑或运算符进行短路运算。例如,0 && 'foo' 和 null || 'bar' 的结果。
1let andResult = 0 && 'foo';
2let orResult = null || 'bar';
3console.log(andResult, orResult); // 输出:0 'bar'
这些练习题覆盖了JavaScript中的基本运算符和一些常见的运算场景,有助于加深对JavaScript运算符的理解和应用。