今天在看flex源码的时候发现代码中出现了特殊的符号----“===”,由于是第一次看到,感到很奇怪,于是上网查了一下:
完全等於符號
在 ActionScript 一個等號(=)是指定值給變數或物件的符號、兩個等號(==)則是邏輯上判斷兩個值是否相等的符號,那麼三個等號呢(===)?神奇了吧!三個等號就要邏輯上判斷兩個值是否真的完全相等的符號,而且不只是數值相等,連資料類型都要一模一樣才行(它不會自動幫您轉換資料類型),條件更嚴苛。不過有三個附帶條件:
- Numbers和Boolean物件只要數值相等就算完全相等。
- 兩個字串要完全相等,必須字元數相同,而且裡面每個字元都相同。
- 兩個變數要相等,該變數至少必須代表相同的物件、陣列或函數。而兩個陣列是絕對不會完全相等的,就算是擁有同樣數目的陣列元素也一樣。
試試看判斷下面這些狀況吧!看您的腦袋清不清楚:
s1 = new String("5");
s2 = new String("5");
s3 = new String("Hello");
n = new Number(5);
b = new Boolean(true);s1 == s2; // 結果是true
s1 == s3; // 結果是false
s1 == n; // 結果是 true
s1 == b; // 結果是false
s1 === s2; // 結果是true
s1 === s3; // 結果是false
s1 === n; // 結果是false
s1 === b; // 結果是false
s1 !== s2; // 結果是false
s1 !== s3; // 結果是true
s1 !== n; // 結果是true
s1 !== b; // 結果是true