赋值运算
在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运算符的理解和应用。