JavaScript 运算符
下一篇: JavaScript if…else 语句
运算符是什么?
让我们看一个简单的表达式 4 + 5 等于 9。4 和 5 在这里称为操作数和 '+' 称为运算符。JavaScript 支持以下类型的运算符。
算术运算符
比较运算符
逻辑 (或关系) 运算符
赋值运算符
条件 (或三元) 运算符
我们一个个的来看下这些运算符。
算术运算符
JavaScript 支持下列算术运算符
假设变量 A 的值为10 和 变量B 的值为20,那么:
| Sr.No | Operator and Description |
|---|---|
| 1 |
+ (Addition) 将两个操作数相加 Ex: A + B will give 30 |
| 2 |
- (Subtraction) 将第一个数减去第二个数 Ex: A – B will give -10 |
| 3 |
* (Multiplication) 对两个操作数相乘 Ex: A * B will give 200 |
| 4 |
/ (Division) 将一个操作数除以另一个操作数 Ex: B / A will give 2 |
| 5 |
% (Modulus) 输出一个数对另一个数相除后的余数 Ex: B % A will give 0 |
| 6 |
++ (Increment) 对一个整数加1 Ex: A++ will give 11 |
| 7 |
– (Decrement) 对一个整数减1 Ex: A– will give 9 |
注意 加法运算符 (+) 适用于数字以及字符串相加操作。例如"a"+ 10 会等于"a10"。
示例
下面的代码演示如何在 JavaScript 中使用算术运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 33;
var b = 10;
var c = "Test";
var linebreak = "<br />";
document.write("a + b = ");
result = a + b;
document.write(result);
document.write(linebreak);
document.write("a - b = ");
result = a - b;
document.write(result);
document.write(linebreak);
document.write("a / b = ");
result = a / b;
document.write(result);
document.write(linebreak);
document.write("a % b = ");
result = a % b;
document.write(result);
document.write(linebreak);
document.write("a + b + c = ");
result = a + b + c;
document.write(result);
document.write(linebreak);
a = ++a;
document.write("++a = ");
result = ++a;
document.write(result);
document.write(linebreak);
b = --b;
document.write("--b = ");
result = --b;
document.write(result);
document.write(linebreak);
//-->
</script>
Set the variables to different values and then try...
</body>
</html>
Output a + b = 43 a - b = 23 a / b = 3.3 a % b = 3 a + b + c = 43Test ++a = 35 --b = 8 Set the variables to different values and then try...
比较运算符
JavaScript 支持下列比较运算符:
假设变量 A 的值为 10 和 变量 B 的值为 20,那么:
| Sr.No | Operator and Description |
|---|---|
| 1 |
= = (Equal) 检查两个操作数的值是否相等,如果是,那么条件表达式为 true 。 Ex: (A == B) is not true. |
| 2 |
!= (Not Equal) 检查两个操作数的值是否不相等,如果是,那么条件表达式为 true 。 Ex: (A != B) is true. |
| 3 |
> (Greater than) 检查是否左边的操作数的值大于右操作数的值,如果是的话,那么条件表达式为 true。 Ex: (A > B) is not true. |
| 4 |
< (Less than) 检查左边操作数的值是否小于右边操作数的值,如果是,条件表达式为 true。 Ex: (A < B) is true. |
| 5 |
>= (Greater than or Equal to) 检查左边操作数的值是否大于或等于右操作数的值,如果是,那么条件表达式为 true。 Ex: (A >= B) is not true. |
| 6 |
<= (Less than or Equal to) 检查左边操作数的值是否小于或等于右边操作数的值,如果是条件表达式变为 true。 Ex: (A <= B) is true. |
示例
下面的代码演示如何在 JavaScript 中使用比较运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 10;
var b = 20
var linebreak = "<br />";
document.write("(a == b) => ");
result = (a == b);
document.write(result);
document.write(linebreak);
document.write("(a < b) => ");
result = (a < b);
document.write(result);
document.write(linebreak);
document.write("(a > b) => ");
result = (a > b);
document.write(result);
document.write(linebreak);
document.write("(a != b) => ");
result = (a != b);
document.write(result);
document.write(linebreak);
document.write("(a >= b) => ");
result = (a >= b);
document.write(result);
document.write(linebreak);
document.write("(a <= b) => ");
result = (a <= b);
document.write(result);
document.write(linebreak);
//-->
</script>
Set the variables to different values and different operators and then try...
</body>
</html>
Output (a == b) => false (a < b) => true (a > b) => false (a != b) => true (a >= b) => false a <= b) => true Set the variables to different values and different operators and then try...
逻辑运算符
JavaScript 支持以下逻辑运算符:
假设变量 A 的值为 10 和 变量 B 的值为 20,那么:
| Sr.No | Operator and Description |
|---|---|
| 1 |
&& (Logical AND) 如果两个操作数都为非0,那么该表达式返回 true Ex: (A && B) is true. |
| 2 |
|| (Logical OR) 如果两个操作数中任意一个为非0,那么该表达式返回 true Ex: (A || B) is true. |
| 3 |
! (Logical NOT) 反转操作数的逻辑状态,如果条件为 true,然后逻辑 ! 运算符后将变为false Ex: ! (A && B) is false. |
示例
请尝试以下代码,以了解如何在 JavaScript 中实现逻辑运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = true;
var b = false;
var linebreak = "<br />";
document.write("(a && b) => ");
result = (a && b);
document.write(result);
document.write(linebreak);
document.write("(a || b) => ");
result = (a || b);
document.write(result);
document.write(linebreak);
document.write("!(a && b) => ");
result = (!(a && b));
document.write(result);
document.write(linebreak);
//-->
</script>
<p>Set the variables to different values and different operators and then try...</p>
</body>
</html>
Output (a && b) => false (a || b) => true !(a && b) => true Set the variables to different values and different operators and then try...
按位运算符
JavaScript 支持以下的按位运算符
假设变量 A 值为 2 和 变量 B 的值为 3,那么:
| Sr.No | Operator and Description |
|---|---|
| 1 |
& (Bitwise AND) 对整数的每一个二进制位进行与操作 Ex: (A & B) is 2. |
| 2 |
| (BitWise OR) 对整数的每一个二进制位进行或操作 Ex: (A | B) is 3. |
| 3 |
^ (Bitwise XOR) 对整数的每一个二进制位进行异或操作。进行异或运算的两个二进位的值不相同,则异或结果为真。反之,为假。 Ex: (A ^ B) is 1. |
| 4 |
~ (Bitwise Not) 它是一个一元运算符,作用是对所有操作数中的二进制位进行反转。 Ex: (~B) is -4. |
| 5 |
<< (Left Shift) 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 Ex: (A << 1) is 4. |
| 6 |
>> (Right Shift) 右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位。 Ex: (A >> 1) is 1. |
| 7 |
>>> (Right shift with Zero) 此运算符是和 >> 运算符类似,只是左边移中的位将始终为零。 Ex: (A >>> 1) is 1. |
示例
请尝试以下代码,在 JavaScript 执行按位运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 2; // Bit presentation 10
var b = 3; // Bit presentation 11
var linebreak = "<br />";
document.write("(a & b) => ");
result = (a & b);
document.write(result);
document.write(linebreak);
document.write("(a | b) => ");
result = (a | b);
document.write(result);
document.write(linebreak);
document.write("(a ^ b) => ");
result = (a ^ b);
document.write(result);
document.write(linebreak);
document.write("(~b) => ");
result = (~b);
document.write(result);
document.write(linebreak);
document.write("(a << b) => ");
result = (a << b);
document.write(result);
document.write(linebreak);
document.write("(a >> b) => ");
result = (a >> b);
document.write(result);
document.write(linebreak);
//-->
</script>
<p>Set the variables to different values and different operators and then try...</p>
</body>
</html>
(a & b) => 2 (a | b) => 3 (a ^ b) => 1 (~b) => -4 (a << b) => 16 (a >> b) => 0 Set the variables to different values and different operators and then try...
赋值运算符
JavaScript 支持下面的赋值运算符
| Sr.No | Operator and Description |
|---|---|
| 1 |
= (Simple Assignment ) 将右侧操作数的值分配给左侧操作数。 Ex: C = A + B will assign the value of A + B into C |
| 2 |
+= (Add and Assignment) 它将右操作数和左操作数进行相加,并将结果赋给左操作数。 Ex: C += A is equivalent to C = C + A |
| 3 |
−= (Subtract and Assignment) 它将左操作数减去右操作数,并将结果赋给左操作数。 Ex: C -= A is equivalent to C = C – A |
| 4 |
*= (Multiply and Assignment) 它将右操作数与左操作数相乘,并将结果赋给左操作数。 Ex: C *= A is equivalent to C = C * A |
| 5 |
/= (Divide and Assignment) 它将左边操作数除以右操作数,并将结果赋给左操作数。 Ex: C /= A is equivalent to C = C / A |
| 6 |
%= (Modules and Assignment) 它对两个操作数进行取模运算,并将结果赋给左操作数。 Ex: C %= A is equivalent to C = C % A |
请注意 按位运算符同样适用这样的逻辑,所以他们将会成为 <<= ,>> =,&=,|= 和 ^ =。
示例
请尝试以下代码以在 JavaScript 执行赋值运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 33;
var b = 10;
var linebreak = "<br />";
document.write("Value of a => (a = b) => ");
result = (a = b);
document.write(result);
document.write(linebreak);
document.write("Value of a => (a += b) => ");
result = (a += b);
document.write(result);
document.write(linebreak);
document.write("Value of a => (a -= b) => ");
result = (a -= b);
document.write(result);
document.write(linebreak);
document.write("Value of a => (a *= b) => ");
result = (a *= b);
document.write(result);
document.write(linebreak);
document.write("Value of a => (a /= b) => ");
result = (a /= b);
document.write(result);
document.write(linebreak);
document.write("Value of a => (a %= b) => ");
result = (a %= b);
document.write(result);
document.write(linebreak);
//-->
</script>
<p>Set the variables to different values and different operators and then try...</p>
</body>
</html>
Output Value of a => (a = b) => 10 Value of a => (a += b) => 20 Value of a => (a -= b) => 10 Value of a => (a *= b) => 100 Value of a => (a /= b) => 10 Value of a => (a %= b) => 0 Set the variables to different values and different operators and then try...
杂项运算符
我们将讨论两个在 JavaScript 中很有用的运算符︰ 条件运算符 (?:) 和 typeof 运算符。
条件运算符 (?:)
条件运算符首先计算表达式为 true 或 false 的值,然后在根据结果选择执行两个给定语句中的一个。
| Sr.No | Operator and Description |
|---|---|
| 1 |
? : (Conditional ) If Condition is true? Then value X : Otherwise value Y 表达式 ? X : Y ,如果表达式的值为 true ,那么返回 X,否则返回 Y 。如: 5 > 3 ? 2 : 3, 因为5 大于 3为 true,所以整个表达式最后的结果为2 。 |
示例
请尝试以下代码,以了解如何在 JavaScript 中使用条件运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 10;
var b = 20;
var linebreak = "<br />";
document.write ("((a > b) ? 100 : 200) => ");
result = (a > b) ? 100 : 200;
document.write(result);
document.write(linebreak);
document.write ("((a < b) ? 100 : 200) => ");
result = (a < b) ? 100 : 200;
document.write(result);
document.write(linebreak);
//-->
</script>
<p>Set the variables to different values and different operators and then try...</p>
</body>
</html>
Output ((a > b) ? 100 : 200) => 200 ((a < b) ? 100 : 200) => 100 Set the variables to different values and different operators and then try...
Typeof 运算符是放置在某个操作数之前,可以是任何类型的一元运算符。其值返回的是一个字符串,用于指示操作数的数据类型。
如果该运算符的操作数是数字、 字符串或布尔值并返回 true 或 false ,那么 typeof 运算符可以计算出这些操作数类型是否为"数字"、"字符串"或"布尔值"。
以下是 typeof 运算符返回值的列表。
| Type | String Returned by typeof |
|---|---|
| Number | "number" |
| String | "string" |
| Boolean | "boolean" |
| Object | "object" |
| Function | "function" |
| Undefined | "undefined" |
| Null | "object" |
示例
下面的代码演示如何实现 typeof 运算符。
<html>
<body>
<script type="text/javascript">
<!--
var a = 10;
var b = "String";
var linebreak = "<br />";
result = (typeof b == "string" ? "B is String" : "B is Numeric");
document.write("Result => ");
document.write(result);
document.write(linebreak);
result = (typeof a == "string" ? "A is String" : "A is Numeric");
document.write("Result => ");
document.write(result);
document.write(linebreak);
//-->
</script>
<p>Set the variables to different values and different operators and then try...</p>
</body>
</html>
Output Result => B is String Result => A is Numeric Set the variables to different values and different operators and then try...
下一篇: JavaScript if…else 语句