运算符对给定的操作数执行数学和逻辑运算。
JavaScript具有以下类型的运算符:
算术运算符
赋值运算符
比较运算符
按位运算符
逻辑运算符
字符串运算符
条件(三元)运算符
一元运算符
关系运算符
算术运算符用于对数字执行算术运算。
算术运算符将数值作为其操作数,并返回单个数值。
运算符 | 描述 | 示例 | 定义 | 测试一下 |
---|---|---|---|---|
+ | 加法 | a + b | a和b的总和 | 测试一下 |
- | 减法 | a-b | a和b之差 | 测试一下 |
* | 乘法 | a * b | a和b的乘积 | 测试一下 |
** | 求幂 | a ** b | a的b次方 | 测试一下 |
/ | 除法 | a / b | a除以b | 测试一下 |
% | 求模(余数) | a%b | a / b的余数 | 测试一下 |
++ | 自增 | a ++ | a自增1 | 测试一下 |
-- | 自减 | a-- | a自减1 | 测试一下 |
赋值运算符将值分配给JavaScript变量。
简单赋值运算符等于(=),它将其右操作数的值赋给其左操作数。
运算符 | 描述 | 示例 | 等同 | 测试一下 |
---|---|---|---|---|
= | 赋值 | a = b | a = b | 测试一下 |
+= | 相加之后再赋值 | a + = b | a = a + b | 测试一下 |
-= | 相减之后再赋值 | a-= b | a = a-b | 测试一下 |
*= | 相乘之后再赋值 | a * = b | a = a * b | 测试一下 |
**= | 求幂之后再赋值 | a ** = b | a = a ** b | 测试一下 |
/= | 相除之后再赋值 | a / = b | a = a / b | 测试一下 |
%= | 求模之后再赋值 | a%= b | a = a%b | 测试一下 |
比较运算符用于比较两个值并返回布尔值。
运算符 | 描述 | 示例 | 定义 | 测试一下 |
---|---|---|---|---|
== | 等于 | a == b | 如果a等于b,则为真 | 测试一下 |
=== | 相同 | a === b | 如果a等于b,并且属于相同类型,则为true | 测试一下 |
!= | 不相等 | a!= b | 如果a不等于b为真 | 测试一下 |
!== | 不相等包括类型 | a!== b | 如果a不等于b,并且不是同一数据类型,则为true | 测试一下 |
> | 大于 | a> b | 如果a大于b,则为true | 测试一下 |
< | 小于 | a <b | 如果a小于b,则为true | 测试一下 |
>= | 大于或等于 | a> = b | 如果a大于或等于b,则为true | 测试一下 |
<= | 小于或等于 | a <= b | 如果a小于或等于b,则为true | 测试一下 |
(a ==b)和(a ===b)之间的区别是:
== 如果a等于b,则返回true
===如果a等于b,并且它们属于同一类型,则返回true
可以在条件语句中使用比较运算符来比较值并根据得到结果进入不同流程。
在本教程的后面,您将学习如何使用条件语句。
按位运算符将其操作数视为一组32位(零和一),而不是十进制,十六进制或八进制数字。
该操作中的任何数字操作数都将转换为32位数字。结果转换回JavaScript编号。
运算符 | 描述 | 示例 | 等同 | 结果 | 小数 |
---|---|---|---|---|---|
& | 与 | 5&1 | 0101和0001 | 0001 | 1个 |
| | 或 | 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | 非 | ~5 | ~0101 | 1010 | 10 |
^ | 异或 | 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
<< | 左移 | 5 << 1 | 0101 << 1 | 1010 | 10 |
>> | 有符号右移 | 5 >> 1 | 0101 >> 1 | 0010 | 2 |
>>> | 无符号右移 | 5 >>> 1 | 0101 >>> 1 | 0010 | 2 |
上面的示例使用4位无符号示例。但是JavaScript使用32位带符号的数字。
因此,在JavaScript中,~5不会返回10。它将返回-6。
~00000000000000000000000000000101将返回11111111111111111111111111111010
逻辑运算符用于确定变量或值之间的逻辑。
逻辑运算符通常用于组合条件语句,它们返回布尔值。
该+运算符还可以用于连接(拼接)字符串。
var str1 = "Hello"; var str2 = "World"; var str3 = str1 + " " + str2;测试看看‹/›
加法赋值运算符+=还可以用于连接(拼接)字符串。
var str1 = "Hey! "; str1 += "How r u doing?";测试看看‹/›
在字符串上使用时,该+运算符称为串联运算符。
条件运算符是唯一采用三个操作数的JavaScript运算符。
描述可以根据条件获得两个值之一。语法为:
condition ? val1 : val2
如果condition 的计算结果为true,则将返回val1,否则将返回val2。
您可以在使用标准运算符的任何位置使用条件运算符。
var status = (age >= 18) ? "成人" : "小孩";测试看看‹/›
如果年龄为18岁或以上,则以上语句将值“成人”分配给变量status。否则,它将为status分配值“ 小孩”。
一元运算是只有一个操作数的运算。
JavaScript中包含三个一元运算符:
描述 | 描述 |
---|---|
delete | 删除对象,对象的属性或数组中指定索引处的元素 |
typeof | 返回变量的类型 |
void | 指定要求值的表达式而不返回值 |
delete运算符可删除对象,对象的属性或数组中指定索引处的元素。
如果可以执行操作,则delete运算符返回true;否则,返回false。 如果无法执行操作,则返回false。
如果delete操作符成功,它将属性或元素设置为undefined:
var user = {firstName:"Vishal", age:"22", color:"blue"}; delete user.firstName; // returns true测试看看‹/›
当delete运算符删除数组元素时,该元素将从数组中移除。
var fruits = ["Apple", "Mango", "Banana"]; delete fruits[0]; // delete "Apple"测试看看‹/›
注意:删除数组元素时,数组长度不受影响。
的typeof操作者返回一个变量或表达式的类型。
typeof "" // Returns "string" typeof "Vishal"// Returns "string" typeof "42"// Returns "string" (Number within quotes is String) typeof 42 // Returns "number" typeof true// Returns "boolean" typeof false // Returns "boolean" typeof undefined // Returns "undefined" typeof null// Returns "object" typeof {name:"Vishal", age:22} // Returns "object" typeof [2, 4, 6, 8]// Returns "object" (not "array", see note below) typeof function myFunc(){} // Returns "function"测试看看‹/›
注意:typeof操作符为数组返回“object”,因为在JavaScript中数组是对象。
这是typeof运算符返回值的列表:
类型 | typeof返回的字符串 |
---|---|
Number | "number" |
String | "string" |
Boolean | "boolean" |
Object | "object" |
Function | "function" |
Undefined | "undefined" |
Null | "object" |
void运算符指定要求值的表达式,但不返回值。
下面的代码创建一个超文本链接,当用户单击该链接时,它不会执行任何操作。
<a href="javascript:void(0)">Click here to do nothing</a>测试看看‹/›
关系运算符比较其操作数,并根据比较是否为真返回一个布尔值。
JavaScript中有两个关系运算符:
描述 | 描述 |
---|---|
in | 如果指定的属性在指定的对象中,则返回true |
instanceof | 如果对象是对象类型的示例,则返回true |
如果指定的属性在指定的对象中,in运算符返回true。
var user = {firstName:"Vishal", age:"22", color:"blue"}; "firstName" in user; // returns true "age" in user;// returns true "Food" in user; // returns false测试看看‹/›
将in运算符与Array数组一起使用时,必须指定索引号,而不是该索引处的值。
var fruits = ["Apple", "Mango", "Banana"]; var item1 = 0 in fruits; // returns true var item2 = 1 in fruits; // returns true var item3 = 2 in fruits; // returns true var item4 = 3 in fruits; // returns false测试看看‹/›
如果指定的对象属于指定的对象类型,则instanceof运算符将返回true。
需要在运行时判断对象类型时,请使用instanceof运算符。
var myObj = new Date(); if (myObj instanceof Date) { // statements to execute }测试看看‹/›