2018-04-09

學(xué)習(xí)筆記 -- JavaScript if條件及相等運(yùn)算中的數(shù)據(jù)轉(zhuǎn)換

1. if(xx) 語(yǔ)句中數(shù)據(jù)類型的轉(zhuǎn)換

我們知道if語(yǔ)句條件需要一返回一個(gè)布爾值,如下所示:

if (true) {
  console.log('hello');
}

運(yùn)行結(jié)果如下:


那如果我們?cè)趇f語(yǔ)句的條件中傳入其它的數(shù)據(jù)類型,會(huì)怎樣呢?比如像下面的代碼會(huì)輸出什么?

if ("hello") {
  console.log('hello');
}

現(xiàn)在,判斷條件變成了一個(gè)字符串,那是怎么判斷的呢?請(qǐng)看運(yùn)行結(jié)果。

可以看到,它仍然輸出了"hello",也就是說條件仍然為真。
為什么一個(gè)字符串會(huì)變成布爾值呢?這就是if判斷中條件的數(shù)據(jù)類型轉(zhuǎn)換。

如果if語(yǔ)句的條件是非布爾類型,JavaScript會(huì)自動(dòng)將數(shù)據(jù)轉(zhuǎn)換為布爾類型的數(shù)據(jù)。
它的轉(zhuǎn)換規(guī)則相對(duì)簡(jiǎn)單:除了以下五個(gè)值的轉(zhuǎn)換結(jié)果為false,其他的值全部為true。

undefined
null
+0或-0
NaN
''(空字符串)

我們來驗(yàn)證一下:



以上代碼輸出結(jié)果為"world",可見判斷條件為false。再接著往下看:


這里有個(gè)問題需要注意,先看下面的代碼。



這跟上面一個(gè)好像是相同的,但是結(jié)果卻不一樣。這是因?yàn)闂l件中字符串內(nèi)有一個(gè)空格,空格也算字符所以它不是一個(gè)空字符串。

我們?cè)倏匆幌缕渌鼣?shù)據(jù)類型的轉(zhuǎn)換。



通過實(shí)際驗(yàn)證,除了上面所列的5種,其它數(shù)據(jù)均轉(zhuǎn)換為true.


2. 相等運(yùn)算(==)中的數(shù)據(jù)類型轉(zhuǎn)換

相等運(yùn)算符用來比較相同類型的數(shù)據(jù)時(shí),僅比較其是否相等。
比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,然后再用嚴(yán)格相等運(yùn)算符比較,轉(zhuǎn)換時(shí)相當(dāng)于調(diào)用Number函數(shù)。類型轉(zhuǎn)換規(guī)則如下。

  • 原始類型數(shù)據(jù)
    原始類型的數(shù)據(jù)會(huì)轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。



  • 對(duì)象
    Number方法的參數(shù)是對(duì)象時(shí),將返回NaN,除非是包含單個(gè)數(shù)值的數(shù)組。


以上為自已學(xué)習(xí)中的理解,歡迎批評(píng)指正。


參考:
http://javascript.ruanyifeng.com/grammar/conversion.html#toc7

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,563評(píng)論 0 13
  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,563評(píng)論 1 44
  • FreeCodeCamp - Basic JavaScript 寫在前面: 我曾經(jīng)在進(jìn)谷前刷過這一套題,不過當(dāng)時(shí)只...
    付林恒閱讀 16,578評(píng)論 5 28
  • 1、為了記錄自己的情感變化 這幾日的情感是起伏的。比如,前日一個(gè)人在跑步的時(shí)候,因?yàn)閮?nèi)心舒暢而不自覺哼唱,然后就自...
    一支筆的陪伴閱讀 295評(píng)論 0 5
  • 最新數(shù)據(jù)表明小米科技已然躋身于世界智能手機(jī)前五的位置。非常了得。 中國(guó)公司有華為、聯(lián)想和小米,在五個(gè)席位中獨(dú)占3席...
    asker閱讀 769評(píng)論 1 3

友情鏈接更多精彩內(nèi)容