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

資訊專欄INFORMATION COLUMN

從 == 和 === 入手,聊聊隱式類型轉換

learning / 965人閱讀

摘要:面試官和有什么區別童鞋要求數據類型相同,會進行隱式類型轉換面試官能輸出么童鞋下面,我們來一起看看和到底有什么區別,以及上面問題的解法。其中,被稱為引用數據類型,其他種被稱為基本數據類型。是一種類似于字符串的,表示獨一無二值的數據類型。

面試官:== 和 === 有什么區別?  
童鞋:=== 要求數據類型相同,== 會進行隱式類型轉換...
面試官:JavaScript:(a==1 && a==2 && a==3)能輸出true么?
童鞋:???

下面,我們來一起看看 == 和 === 到底有什么區別,以及上面問題的解法。

數據類型

JavaScript 語言中,數據類型有:undefined、null、Boolean、String、Number、Object、Symbol。

其中,Object被稱為引用數據類型,其他6種被稱為基本數據類型。Symbol 是一種類似于字符串的,表示獨一無二值的數據類型。

隱式類型轉換

做一個小實驗,得出不同類型的值用 == 操作符比較后的結果

類型(x) 類型(y) 結果
undefined null true
String Number toNumber(x) == y
Boolean 任何數據類型 toNumber(x) == y
Object 任何數據類型 toPrimitive(x) == y
Symbol 任何數據類型 false

toNumber() 和 toPrimitive() 方法是內部的,可以看一下估值

toNumber() 方法,比較好理解,就是轉換成 Number 類型,類似 Number() 方法。

類型 結果
undefined NAN
null 0
Boolean 任何數據類型
String Number

toPrimitive() 方法

類型 結果
Object 如果對象的 valueOf 方法的結果是原始值,返回原始值; 如果對象的 toString 方法返回原始值,就返回這個值; 其他情況都返回一個錯誤

舉個例子,來說明一下 toPrimitive() 方法

let test = {
  value: 0,
  valueOf () {
    console.log("in valueOf fun")
    return this.value
  },
  toString () {
    console.log("in toString fun")
    return this.value
  }
}

console.log("test == 0 ?", test == 0)

控制臺輸出結果:

回到面試題
JavaScript:(a==1 && a==2 && a==3)能輸出true么?
let a = {
  value: 0,
  valueOf () {
    return ++this.value
  }
}

面試遇到隱式類型轉換,再也不會怕啦~

本文首發于:https://github.com/yingye/Blog/issues/1

歡迎各位關注我的Blog,正文以issue形式呈現,喜歡請點star,訂閱請點watch~

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

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

相關文章

  • ++[[]][+[]]+[+[]]==10? 深入淺出弱類型 JS 的隱式轉換

    摘要:與此相對,強類型語言的類型之間不一定有隱式轉換。三為什么是弱類型弱類型相對于強類型來說類型檢查更不嚴格,比如說允許變量類型的隱式轉換,允許強制類型轉換等等。在中,加性運算符有大量的特殊行為。 從++[[]][+[]]+[+[]]==10?深入淺出弱類型JS的隱式轉換 本文純屬原創? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉載! 原文收錄在【我的GitHub博客】,覺得本文寫的不算爛的...

    miya 評論0 收藏0
  • 你不知道的js中關于this綁定機制的解析[看完還不懂算我輸]

    摘要:綁定書中提到在中,實際上并不存在所謂的構造函數,只有對于函數的構造調用。規則使用構造調用的時候,會自動綁定在期間創建的對象上。指向新創建的對象綁定比隱式綁定優先級高。 showImg(http://ww1.sinaimg.cn/large/005Y4rCogy1fstcwvzkjzj30sg0g0qqn.jpg); 前言 最近正在看《你不知道的JavaScript》,里面關于this綁...

    dunizb 評論0 收藏0
  • 性能優化詳解

    摘要:幾個月前面試的時候問我性能優化我可能會開始背誦雅虎軍規,加點,代碼層面稍稍講點,現在系統的梳理下性能優化的方方面面本文涉及方面有代碼優化網絡請求過程角度入手解析建立鏈接網絡往返時延數據傳輸網絡問題角度入手請求數量流量性能優化測試工具代碼優化 幾個月前面試的時候問我性能優化我可能會開始背誦雅虎軍規,加點webp,代碼層面稍稍講點,現在系統的梳理下性能優化的方方面面 本文涉及方面有: 代...

    piapia 評論0 收藏0
  • 性能優化詳解

    摘要:幾個月前面試的時候問我性能優化我可能會開始背誦雅虎軍規,加點,代碼層面稍稍講點,現在系統的梳理下性能優化的方方面面本文涉及方面有代碼優化網絡請求過程角度入手解析建立鏈接網絡往返時延數據傳輸網絡問題角度入手請求數量流量性能優化測試工具代碼優化 幾個月前面試的時候問我性能優化我可能會開始背誦雅虎軍規,加點webp,代碼層面稍稍講點,現在系統的梳理下性能優化的方方面面 本文涉及方面有: 代...

    godlong_X 評論0 收藏0
  • 33 個 js 核心概念(四):顯式 (名義) 與 隱式 (鴨子)類型轉換

    摘要:相對于顯式使用,隱式轉換則更加簡潔。隱式轉換為布爾值將其他類型值隱式轉換為布爾值是我們最常用的一種轉換。在以下場景中,都是進行判斷,而只要傳入的值不是布爾值,都會通過隱式類型轉換轉為布爾值。原文地址阿木木的博客與隱式鴨子類型轉換 showImg(https://segmentfault.com/img/remote/1460000017309581); 前言 說實話,JavaScrip...

    hoohack 評論0 收藏0

發表評論

0條評論

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