天天看點

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

本節書摘來自異步社群《angularjs進階程式設計》一書中的第5章,第5.6節,作者:【美】adam freeman(弗裡曼)著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

javascript定義了大量标準的運算符集。我在表5-3中概括了最有用的。

表5-3  有用的javascript運算符

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

5.6.1 使用條件語句

許多javascript運算符是和條件語句一起使用的。在本書中,我傾向使用if/else和switch語句。清單5-24展示了兩者的使用(如果你使用過幾乎所有程式設計語言,那你會很熟悉)。

清單5-24 在檔案jsdemo.html中使用if/else和switch條件語句

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

清單結果如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

5.6.2 對比等于運算符和全等運算符

等于和全等運算符要特别注意。等于運算符會為了判定是否相等而嘗試強制将運算對象轉為相同類型。隻要你意識到它所做的,這就是個得心應手的特性。清單5-25展示了等于運算符的作用。

清單5-25 在檔案jsdemo.html中使用等于運算符

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

該腳本輸出如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

javascript将兩個運算對象轉化為相同的類型然後比較它們。實質上,等于運算符檢測值是否相同,與類型無關。如果想確定檢查值和類型都相同,那你需要使用全等運算符(===,三個等号,而不是兩個等于運算符),如清單5-26中所示。

清單5-26 在檔案jsdemo.html中使用全等運算符

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

在本例中,全等運算符會認定兩個變量是不同的。該運算符不會強制轉化類型。該腳本的結果如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

javascript基元(primitives)是用值做比較,但javascript對象是通過引用比較。清單5-27展示了javascript如何處理對象的等于和全等檢測。

清單5-27 在檔案jsdemo.html中對對象執行等于和全等檢測

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

該腳本的結果如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

清單5-28展示了對基元執行相同的檢測。

清單5-28 在檔案jsdemo.html中對基元執行

《AngularJS進階程式設計》——5.6 使用JavaScript運算符
《AngularJS進階程式設計》——5.6 使用JavaScript運算符

提示:

angularjs用angular.equals方法擴充了内置的對比較的支援,它拿兩個對象或值做參數,如果它們通過全等比較(===)或者兩個參數是對象并且它們的所有屬性都通過全等比較,那就傳回true。我不傾向使用該方法,是以我在本章中沒有包含其示範。

5.6.3 顯式轉換類型

字元串連接配接運算符(+)比加号(也是+)的優先級還高,這意味着javascript将連接配接變量優先于加法。這會緻使混亂,因為javascript還會自由地轉化類型而産生結果(該結果并非總是所期望的),如清單5-29所示。

清單5-29 在檔案jsdemo.html中字元串連接配接運算符優先

《AngularJS進階程式設計》——5.6 使用JavaScript運算符
《AngularJS進階程式設計》——5.6 使用JavaScript運算符

第二個結果是導緻混亂的那種。憑借操作符優先級和狂熱的類型轉化,可能把加号看作了字元串連接配接符。為了避免這種情況,你可以顯式地轉化值的類型,以確定你執行了的運算符類型正确,如下面段落中所述。

1.數字轉字元串

如果你有多個數字變量并想将它們作為字元串連接配接,那你可以使用tostring方法将數字轉為字元串,如清單5-30所示。

清單5-30 在檔案jsdemo.html中使用number.tostring方法

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

注意我在圓括号中放的數值,然後我調用tostring方法。這是因為你必須讓javascript在你調用數字類型定義的方法前将字面量轉為數字。我還展示了替代方案用以達到相同效果,那就是調用string函數并傳入數值作為參數。它們二者的技術效果相同,這是将數字轉為字元串,說明“+”運算符用于字元串連接配接而不是加法。該腳本的輸出如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

這還有其他方法,可以讓你對數字用字元串表示施以更多控制。在表5-4中簡述了這些方法。表中所示的所有方法都由數字類型所定義。

表5-4  可用的數字轉字元串的方法

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

2.字元串轉數字

互補的技術是将字元串轉為數字,以使得你可以執行加法而不是連接配接。你可以使用number函數來做,如清單5-31所示。

清單5-31 在檔案jsdemo.html中将字元串轉為數字

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

該腳本的輸出如下:

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

number方法是一種嚴格的解析字元串值的方式,但你可以使用另外兩個更靈活的,同時也會忽略後面非數字元号的函數。這些函數是parseint和parsefloat。我在表5-5中全面描述了三種方法。

表5-5  可用的字元串轉數字的方法

《AngularJS進階程式設計》——5.6 使用JavaScript運算符

繼續閱讀