- JavaScript前端開發基礎教程
- 呂云翔 歐陽植昊 張遠等編著
- 1575字
- 2021-10-27 17:01:01
2.3.7 特殊運算符
除了前幾節列出的運算符之外,JavaScript中還有一些特殊的運算符用來處理特定的問題,主要包括以下幾種。
1)逗號運算符:二元運算符,用來將兩個操作數隔開,在2.1.3節中提到用逗號來隔開在一行中聲明的兩個變量。逗號運算符還可以用在for循環語句中,將多個變量更新表達式隔開,例如:

輸出如圖2.29所示。

圖2.29 樣例輸出2.29
2)存取運算符:二元運算符,用來存取數組或者對象中的數據,存取數組中的數據用“[]”,而存取對象中的數據則使用“.”,例如:

輸出如圖2.30所示。

圖2.30 樣例輸出2.30
3)條件運算符:三元運算符,用來根據條件的真假執行不同語句。條件運算符是JavaScript中唯一的一個三元運算符,以“?:”作為符號。條件運算符和“if…else”語句類似,只是寫法更加簡潔。如果條件語句的結果為“true”,則執行“:”前面的語句;如果結果為“false”,則執行“:”后面的語句,例如:

輸出如圖2.31所示。

圖2.31 樣例輸出2.31
4)new:一元運算符,用來創建一個新的對象,對象被創建后就可以調用其屬性和方法,例如:

輸出如圖2.32所示。

圖2.32 樣例輸出2.32
5)delete:一元運算符,用來刪除對象的屬性或者數組中的元素,并返回一個布爾值,當刪除成功時返回true,失敗時返回false。有的書中或者教程中會說,delete可以用來刪除不用var或者let關鍵字定義的變量、對象或者數組。但是在之前的章節中提過,不用var或者let聲明的變量其實是為Window對象添加一個屬性,本質上與變量是有區別的。而JavaScript中數組的元素其實也是數組的一種屬性,只是比較特殊。因此我們只談其本質,即delete運算符只是用來刪除對象的屬性,例如:


輸出如圖2.33所示。

圖2.33 樣例輸出2.33
從結果可以看出,我們成功刪除了Student對象中的name屬性和arr數組中的第三個元素,再試圖使用這些屬性或者元素時可以看到,該屬性或元素已經變為“undefined”,在2.2.6節中提過,當對象存在而對象的屬性或者數組的元素不存在時,其類型會被設定為undefined。
而因為a作為變量時是不能被刪除的,因此會出現刪除失敗的情況,這證明了delete是不能用于刪除變量的。但是b作為Window對象的屬性時是可以被刪除的,但是這種不加“var”聲明的變量在刪除后是不能再被使用的,否則會報錯。
需要注意的是,JavaScript的核心對象的屬性是不能被刪除的,但是某些內置對象的屬性是可以被刪除的,但是不建議這么做,因為刪除后這些內置對象不能再被訪問。
6)this:一元運算符,用來指代當前對象,一般用于在對象或函數內部調用自身的屬性或者方法時代替對象自身。在調用對象的屬性或方法時,一般會用“對象名.屬性名”或者“對象名.方法名()”的方法來進行調用,而“this”的用處就是把對象名替換成“this”,例如:

輸出如圖2.34所示。

圖2.34 樣例輸出2.34
7)in:二元運算符,用來判斷第一個操作數是否屬于第二個操作數,并返回一個布爾類型的結果,若屬于則返回true,不屬于則返回false。第一個操作數可以是數組元素的下標,也可以是對象的屬性,第二個操作數就是與它們相對應的數組或者對象,例如:


輸出如圖2.35所示。

圖2.35 樣例輸出2.35
需要注意的是,當查詢元素是否在數組中時,第一個操作數指的是數組元素的下標,而不是元素的值。
8)instanceof:二元運算符,用來識別第一個操作數是否是第二個操作數的類型,并返回一個布爾類型的結果,如果是返回true,否則返回false。其用法與“in”相似,第一個操作數為對象,第二個操作數為對象的類型名,例如:

輸出如圖2.36所示。

圖2.36 樣例輸出2.36
同樣,還可以判斷對象是否屬于自己定義的變量類型,例如:

輸出如圖2.37所示。

圖2.37 樣例輸出2.37
9)void:一元運算符,用來取消返回值。當需要進行語句的執行,但又不需要操作數返回值或者對象時,可以用“void”來阻斷這個過程,例如:

輸出如圖2.38所示。

圖2.38 樣例輸出2.38
10)typeof:一元運算符,用來判斷操作數類型并返回一個和類型名相同的字符串,對不同類型的操作數,返回的值是不同的,表2.11展示了JavaScript中“typeof”運算符對不同類型的返回值。
表2.11 JavaScript中“typeof”運算符的返回結果

具體用法如下:

輸出如圖2.39所示。

圖2.39 樣例輸出2.39
- Learning PostgreSQL
- 零起步玩轉掌控板與Mind+
- 自己動手實現Lua:虛擬機、編譯器和標準庫
- 圖解Java數據結構與算法(微課視頻版)
- PostgreSQL技術內幕:事務處理深度探索
- DevOps Automation Cookbook
- MATLAB應用與實驗教程
- 數據結構(Python語言描述)(第2版)
- 數據結構(C語言)
- 深度學習:算法入門與Keras編程實踐
- Learning Selenium Testing Tools(Third Edition)
- Learning JavaScript Data Structures and Algorithms
- 微服務架構深度解析:原理、實踐與進階
- PHP+MySQL+Dreamweaver動態網站開發從入門到精通(第3版)
- Natural Language Processing with Java and LingPipe Cookbook