js筆記十一之?dāng)?shù)據(jù)類型轉(zhuǎn)換

數(shù)據(jù)類型轉(zhuǎn)換

把其他數(shù)據(jù)類型轉(zhuǎn)換為number

isNaN , Number , parseInt , parseFloat
在進(jìn)行加減乘除數(shù)學(xué)運(yùn)算的時候

// true         -> 1
// false        -> 0

// null         -> 0
// undefined    -> NaN

// ""           -> 0
// "12"         -> 12
// "12px"       -> NaN/12
// "lilei"      -> NaN
// {}           -> NaN
// function()   -> NaN
// /^$/         -> NaN
// [] -> ""     -> 0
// [12]     -> "12"     -> 12
// [12,23]  -> "12,23"  -> NaN/12

// 引用數(shù)據(jù)類型轉(zhuǎn)換為數(shù)字
// 通過toString方法把數(shù)組轉(zhuǎn)化為字符串,然后再調(diào)用Number把字符串轉(zhuǎn)換為數(shù)字

js中的數(shù)學(xué)運(yùn)算

+ - * /加減乘除
除了加法有特殊性,其他的運(yùn)算符都是數(shù)學(xué)運(yùn)算,也就是遇到非數(shù)字類型,需要把其他轉(zhuǎn)換為number在進(jìn)行運(yùn)算
*加法的特殊性: *
在遇到字符串的時候 , + 不是數(shù)學(xué)運(yùn)算 , 而是字符串拼接 , 只要不遇到字符串就是數(shù)學(xué)運(yùn)算

// 減 乘 除
// 1 -'1'           -> 0
// 10 * null        -> 0
// 10 / undefined   -> NaN
// 10 * [10]        -> 100

// 加
// 1 + "1"         -> "11"
// null + "1"      -> "null1"

// 字符串拼接: 是把其他的值轉(zhuǎn)換為字符串然后再拼接(toString)
// 其他數(shù)據(jù)類型的toString是直接的把值用單(雙)引號包起來即可,只有對象的有特殊性,對象.toString() === "[object Object]"

// 練習(xí)
// 1+null+true+undefined+[]+'lilei'+null+undefined+[]+10

/* 1 + null         -> 1
 * 1 + true         -> 2
 * 2 + undefined    -> NaN
 * NaN + [] -> NaN + "" -> "NaN"
 * "NaN" + "lilei" -> "NaNlilei"
 * ...
 * "NaNlileinullundefined10"
/

把其他類型轉(zhuǎn)換為布爾類型

Boolean , ! , !!
在條件判斷的時候,也是轉(zhuǎn)換為布爾類型,然后驗(yàn)證條件的真假

只有0 , NaN , 空字符串 , null , undefined五個轉(zhuǎn)換為false,其余的都是轉(zhuǎn)換為true

// [] -> true
// -1 -> true

if(box){
    // -> 首先把box變量存儲的值獲取到,轉(zhuǎn)換為布爾類型,如果為true條件成立,反之不成立
}

if(3 + "3px"){  // "33px"
    // -> 條件成立
}

if(3 - "3px"){  // NaN
    // -> 條件不成立
}

在使用 == 進(jìn)行比較的時候

在使用 == 進(jìn)行比較的時候,如果左右兩邊的數(shù)據(jù)類型不相同,瀏覽器會默認(rèn)轉(zhuǎn)換為相同的類型,然后再比較(===不會這樣操作)

// -> 對象和對象: 比較的是空間地址,不是相同的空間,結(jié)果肯定是false
// [] == [] -> false
// var a = {};
// var b = a;
// a == b -> true

// -> 對象和數(shù)字: 把對象轉(zhuǎn)換為數(shù)字
// [] == 0 -> true  
// ({}) == NaN -> false       NaN和自己不相等,和其他任何值都不相等

// -> 對象和字符串: 把兩邊都轉(zhuǎn)換為數(shù)字比較的
// [] == "" -> true

// -> 對象和布爾: 把兩邊都轉(zhuǎn)換為數(shù)字
// [] == true -> 0 == 1 -> false
// [] == false -> 0 == 0 -> true
// ![] == false -> true ->  ![] 把數(shù)組變?yōu)椴紶栐偃》?= false , false == false -> true

// -> 字符串和數(shù)字: 字符串轉(zhuǎn)換為數(shù)字

// -> 字符串和布爾: 都轉(zhuǎn)換為數(shù)字

// -> 布爾和數(shù)字: 布爾轉(zhuǎn)換為數(shù)字

規(guī)律: 兩個等于號比較,左右兩邊數(shù)據(jù)值的類型不一樣,瀏覽器會把兩邊的類型都轉(zhuǎn)換為數(shù)字然后再比較,但是null和undefined除外

null == undefined -> true
null === undefined -> false

null以及undefined和其他任何值都不相等

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

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

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,540評論 0 13
  • Javascript 中有6種基本類型(包括 symbol),以及對象類型,他們在不同的運(yùn)算中會被系統(tǒng)轉(zhuǎn)化為不同是...
    faremax閱讀 925評論 0 3
  • 值類型轉(zhuǎn)換將值從一種類型轉(zhuǎn)換為另一種類型通常稱為類型轉(zhuǎn)換,這是顯示的情況;隱式的情況稱為強(qiáng)制類型轉(zhuǎn)換。JavaSc...
    xpwei閱讀 3,736評論 0 5
  • 銳眼視點(diǎn): 蘋果首篇論文發(fā)布,通過模擬和無監(jiān)督學(xué)習(xí)方法改善 AI 技術(shù); 創(chuàng)企Automile為車隊(duì)管理軟件融資7...
    銳眼看世界閱讀 335評論 0 0
  • 關(guān)于家庭作業(yè): 從小學(xué)一年級開始,父母就應(yīng)該表現(xiàn)出樣的態(tài)度:家庭作業(yè)完全是孩子和老師的事。父母不應(yīng)該就家庭作業(yè)...
    尤占芳閱讀 180評論 0 0

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