偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么 === 比 == 安全?7個(gè)類型轉(zhuǎn)換黑洞

開(kāi)發(fā) 前端
類型轉(zhuǎn)換是 JavaScript 里最容易讓人踩坑的特性之一,尤其是雙等號(hào)(==)的隱式類型轉(zhuǎn)換,經(jīng)常會(huì)產(chǎn)生一些令人意想不到的結(jié)果。

類型轉(zhuǎn)換是 JavaScript 里最容易讓人踩坑的特性之一。尤其是雙等號(hào)(==)的隱式類型轉(zhuǎn)換,經(jīng)常會(huì)產(chǎn)生一些令人意想不到的結(jié)果。讓我們一起深入了解這些陷阱,避免在實(shí)際開(kāi)發(fā)中犯錯(cuò)。

陷阱一:數(shù)字與字符串比較

這可能是最常見(jiàn)的類型轉(zhuǎn)換場(chǎng)景,但也藏著不少坑:

console.log(1 == '1')     // true
console.log(1 == '1.0')   // true
console.log(1 == '01')    // true
console.log(0 == '')      // true

// 更離譜的例子
console.log(999 == '999fitness') // false
console.log(0 == '0.0000')      // true

這里的轉(zhuǎn)換規(guī)則是:當(dāng)數(shù)字和字符串比較時(shí),會(huì)嘗試將字符串轉(zhuǎn)換為數(shù)字。但如果字符串不是一個(gè)有效的數(shù)字表示,結(jié)果就會(huì)出人意料。

陷阱二:布爾值的轉(zhuǎn)換

布爾值在比較時(shí)會(huì)先被轉(zhuǎn)換為數(shù)字(true 轉(zhuǎn)為 1,false 轉(zhuǎn)為 0):

console.log(true == 1)     // true
console.log(false == 0)    // true
console.log(true == '1')   // true
console.log(false == '')   // true

// 令人困惑的例子
console.log(false == '0')  // true
console.log(true == '2')   // false
console.log(true == ['1']) // true  ??

陷阱三:null 和 undefined

null 和 undefined 的比較規(guī)則特殊:

這是因?yàn)?nbsp;null == undefined 是特殊規(guī)定的,而在涉及大小比較時(shí),null 會(huì)被轉(zhuǎn)換為數(shù)字 0。

陷阱四:對(duì)象與原始類型比較

當(dāng)對(duì)象與原始類型比較時(shí),會(huì)調(diào)用對(duì)象的 valueOf() 或 toString() 方法:

陷阱五:數(shù)組的特殊情況

空數(shù)組和數(shù)組的轉(zhuǎn)換規(guī)則尤其令人困惑:

陷阱六:多重類型轉(zhuǎn)換

當(dāng)涉及多個(gè)操作數(shù)時(shí),轉(zhuǎn)換規(guī)則會(huì)變得更加復(fù)雜:

陷阱七:NaN 的比較

NaN 是 JavaScript 中最特殊的值之一:

console.log(NaN == NaN)        // false
console.log(NaN === NaN)       // false
console.log(typeof NaN)        // "number"

// 正確的檢查方式
console.log(isNaN(NaN))        // true
console.log(Number.isNaN(NaN)) // true
責(zé)任編輯:趙寧寧 來(lái)源: JavaScript
相關(guān)推薦

2019-04-24 08:00:00

HTTPSHTTP前端

2021-05-12 08:15:53

HTTPSHTTP安全

2013-09-27 10:03:31

AndroidiOS 7

2018-06-21 08:50:53

2021-01-13 10:51:08

PromissetTimeout(函數(shù)

2022-11-10 15:32:29

2020-12-30 07:55:37

C++轉(zhuǎn)換類型

2021-03-11 14:46:05

C++類型轉(zhuǎn)換語(yǔ)言

2024-10-24 14:16:19

2021-05-13 07:58:05

HTTPSHTTP安全

2015-07-31 16:29:15

DockerJavaLinux

2021-12-27 07:10:26

ClassmethodStaticmetho函數(shù)

2016-12-14 12:02:01

StormHadoop大數(shù)據(jù)

2017-02-14 14:20:02

StormHadoop

2020-02-24 12:34:21

JuliaPython編程語(yǔ)言

2022-12-22 21:01:11

2024-08-19 00:10:05

RocketMQ應(yīng)用SDK

2018-10-07 05:08:11

2020-03-18 14:08:48

Windows操作系統(tǒng)功能

2017-03-23 14:37:19

WebAssemblyasm.js編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)