国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

細說 Javascript 類型篇(一) : 相等和比較

wthee / 2420人閱讀

摘要:由于中復雜的類型轉換機制,將會使得由此產生的錯誤變得難以追蹤。此外,類型的強制轉換會對性能也造成一定的影響,例如,當一個字符串與數字進行比較時,會被強制轉換為數字。詳解一下中的比較參考

Javascript 有兩種方法來判斷兩種值是否相等。

相等符號

相等符號由兩個等號組成: ==
Javascript 是弱類型語言。這就意味著相等符號為了比較兩個值將會強制轉換類型。

""           ==   "0"           // false
0            ==   ""            // true
0            ==   "0"           // true
false        ==   "false"       // false
false        ==   "0"           // true
false        ==   undefined     // false
false        ==   null          // false
null         ==   undefined     // true
" 	
"    ==   0             // true

上面的代碼展示了類型轉換的結果,因此我們知道使用相等符號 == 是個不好的編程習慣。由于 Javascript 中復雜的類型轉換機制,將會使得由此產生的錯誤變得難以追蹤。
此外,類型的強制轉換會對性能也造成一定的影響,例如,當一個字符串與數字進行比較時,會被強制轉換為數字。

嚴格相等符號

嚴格相等符號由三個等號組成: ===
它跟相等符號的操作相似,但是嚴格相等符號不會做強制類型轉換的操作。

""           ===   "0"           // false
0            ===   ""            // false
0            ===   "0"           // false
false        ===   "false"       // false
false        ===   "0"           // false
false        ===   undefined     // false
false        ===   null          // false
null         ===   undefined     // false
" 	
"    ===   0             // false

上面的代碼使得代碼更加清晰,如果兩個值的類型不同則直接返回 false,這也會使得性能得到提升。

比較對象

盡管 ===== 被稱為相等符號,但是當比較的兩個值中有一個類型是對象時,表現將大不相同。

{} === {};                   // false
new String("foo") === "foo"; // false
new Number(10) === 10;       // false
var foo = {};
foo === foo;                 // true

在這兒,不再僅僅是比較兩個值是否相等,它將判斷兩個值是否引用同一個對象實例,這個行為比較像 C 中的指針。

總結

這里強烈建議只使用嚴格相等符號 ===。如果我們需要做類型轉換,可以在比較前先做顯式的類型轉換,而不是靠 Javascript 本身復雜的強制轉換方法。

@justjavac 前輩所提的這個問題更加詳述地分析了 Javascript 中的比較。

  

《詳解一下 javascript 中的比較》

參考

http://bonsaiden.github.io/JavaScript-Garden/#types.equality

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78105.html

相關文章

  • 細說 Javascript 類型(四) : 類型轉換

    摘要:因為是弱類型語言,所以它會在任何可能的情形下對變量進行強制類型轉換。內置類型的構造函數調用內置類型的構造函數時,是否使用關鍵字將表現得大不相同。傳遞字面值或非對象值也會造成強制類型轉換的現象。最好的方法就是顯示地將值轉換為,或三種類型之一。 因為 Javascript 是弱類型語言,所以它會在任何可能的情形下對變量進行強制類型轉換。 // These are true new Num...

    chengtao1633 評論0 收藏0
  • 細說 Javascript 類型(三) : instanceof 操作符

    摘要:的操作符可以用來比較兩個操作數的構造函數。這是因為它們的構造函數不可能會是同一個對象。總結綜上所述,我們知道操作符最合適的使用壞境是比較兩個相同上下文背景下的自定義對象的構造函數,正如上篇介紹的操作符,其他壞境下使用作用不大。 Javascript 的 instanceof 操作符可以用來比較兩個操作數的構造函數 constructor。但這個只有在比較自定義對象才有意義。當用來比較 ...

    tylin 評論0 收藏0
  • 細說 Javascript 對象(二) : 原型對象

    摘要:并沒有類繼承模型,而是使用原型對象進行原型式繼承。我們舉例說明原型鏈查找機制當訪問一個對象的屬性時,會從對象本身開始往上遍歷整個原型鏈,直到找到對應屬性為止。原始類型有以下五種型。此外,試圖查找一個不存在屬性時將會遍歷整個原型鏈。 Javascript 并沒有類繼承模型,而是使用原型對象 prototype 進行原型式繼承。 盡管人們經常將此看做是 Javascript 的一個缺點,然...

    lansheng228 評論0 收藏0
  • 爬蟲不得不學之 JavaScript 入門

    摘要:為數值固定的表示法,用來表示整數和浮點數的。無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到位小數。關系運算符關系運算符有和。賦值運算符賦值運算符有六個。 現在的爬蟲越來越難了,不再和之前的那樣,隨便抓個包就可以找到相關的 url ,然后 post 一下或者 get 一下數據就出來了。還有一個可能就是可能你以前用來學習的爬蟲網站太簡單...

    tracymac7 評論0 收藏0
  • 細說 Javascript 函數(四) : ?arguments 對象

    因為最近有博友反饋我的博文是直接翻譯的參考鏈接內的內容,所以我在這里要說明一下,以免引起不必要的誤會。 首先,我很喜歡 segmentfault 的交流和學習的氛圍,所以我很愿意在這里跟各位 SFer 交流學習心得,相互學習,共同進步。 第二,我做技術方面的工作不久,所以學習經歷也不是很長,但是我發現寫博客,總結自己的學習心得是個很好的學習習慣,至少對于我個人而言,我于此收益頗豐,所以我決定堅持一...

    aristark 評論0 收藏0

發表評論

0條評論

wthee

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<