運算符對給定的操作數執(zhí)行數學和邏輯運算。
JavaScript具有以下類型的運算符:
算術運算符
賦值運算符
比較運算符
按位運算符
邏輯運算符
字符串運算符
條件(三元)運算符
一元運算符
關系運算符
算術運算符用于對數字執(zhí)行算術運算。
算術運算符將數值作為其操作數,并返回單個數值。
運算符 | 描述 | 示例 | 定義 | 測試一下 |
---|---|---|---|---|
+ | 加法 | 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)之間的區(qū)別是:
== 如果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?";測試看看?/?
在字符串上使用時,該+運算符稱為串聯(lián)運算符。
條件運算符是唯一采用三個操作數的JavaScript運算符。
描述可以根據條件獲得兩個值之一。語法為:
condition ? val1 : val2
如果condition 的計算結果為true,則將返回val1,否則將返回val2。
您可以在使用標準運算符的任何位置使用條件運算符。
var status = (age >= 18) ? "成人" : "小孩";測試看看?/?
如果年齡為18歲或以上,則以上語句將值“成人”分配給變量status。否則,它將為status分配值“ 小孩”。
一元運算是只有一個操作數的運算。
JavaScript中包含三個一元運算符:
描述 | 描述 |
---|---|
delete | 刪除對象,對象的屬性或數組中指定索引處的元素 |
typeof | 返回變量的類型 |
void | 指定要求值的表達式而不返回值 |
delete運算符可刪除對象,對象的屬性或數組中指定索引處的元素。
如果可以執(zhí)行操作,則delete運算符返回true;否則,返回false。 如果無法執(zhí)行操作,則返回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運算符指定要求值的表達式,但不返回值。
下面的代碼創(chuàng)建一個超文本鏈接,當用戶單擊該鏈接時,它不會執(zhí)行任何操作。
<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 }測試看看?/?