Q: 下面會(huì)輸出什么凭舶?
console.log(null == undefined)
console.log(null === undefined)
他們兩者有什么區(qū)別颠印,該如何解釋他們兩者
console.log(null == undefined)
true
console.log(null === undefined)
false
”==”與”===”一個(gè)是判斷值是否相等,一個(gè)是判斷值及類型是否完全相等。
Q: 考慮下面輸出
var a = { x: 1}
var b = [1]
typeof a
typeof b
思考魏铅,該如何判斷變量是object 還是array呢淮腾?(在后面的章節(jié)會(huì)知曉)
思考題:我們?nèi)绾沃赖膱?zhí)行環(huán)境是嚴(yán)格模式糟需?(后續(xù)章節(jié)會(huì)知曉)
打卡時(shí)間:14:00
數(shù)據(jù)類型
Undefined類型
如果一個(gè)變量未被初始化那么會(huì)自動(dòng)被賦予Undefined值。所以當(dāng)typeof操作符返回“Undefined”值的時(shí)候来破,我們就知道被檢測(cè)的變量還沒(méi)有被聲明篮灼,而不是尚未初始化。
Null類型
如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象徘禁,那么最好將該變量初始化為null而不是其他值。這樣只要檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用髓堪。
Boolean類型
Boolean類型的自勉之true和false是區(qū)分大小寫 送朱。也就是說(shuō)True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標(biāo)識(shí)符干旁。
各種數(shù)據(jù)類型及其對(duì)應(yīng)的轉(zhuǎn)換規(guī)則
例子:
var message="hello world";
if(message){
alert("Value is true");
}
括號(hào)里面進(jìn)行隱式轉(zhuǎn)換驶沼,將其他類型的值轉(zhuǎn)換成布爾值。
假設(shè)一種場(chǎng)景争群,這個(gè)message的值是請(qǐng)求了接口以后才獲得的回怜,如果這個(gè)message有值,alert出來(lái)的值就顯示换薄,沒(méi)有值就不顯示
Number類型
NaN(Not a Number) 是個(gè)特殊的數(shù)值玉雾,用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況翔试。在ECMAScript中,任何數(shù)值除以0都會(huì)返回NaN复旬。而且NaN與任何值都不相等垦缅,包括NaN本身。
針對(duì)此特點(diǎn)驹碍,ECMAScript定義了isNaN()函數(shù)壁涎。
isNaN()在接受到一個(gè)值之后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值志秃。某些不是數(shù)值的值會(huì)直接轉(zhuǎn)換為數(shù)值怔球,例如字符串“10”或Boolean值。任何不能被轉(zhuǎn)換為數(shù)值的值都會(huì)導(dǎo)致這個(gè)函數(shù)返回true浮还。
Boolean值可true可以轉(zhuǎn)換成數(shù)值1庞溜,所以函數(shù)會(huì)返回false。
數(shù)值轉(zhuǎn)換
三個(gè)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:
Number()
parseInt()
parseFloat()
Number()可以用于任何數(shù)據(jù)類型碑定,而另外兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值流码。
parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)延刘。
parseFloat() 函數(shù)可解析一個(gè)字符串漫试,并返回一個(gè)浮點(diǎn)數(shù)。
String類型
String類型表示由零或多個(gè)16位Unicode字符組成的字符序列碘赖,即字符串驾荣。可以由雙引號(hào)(“”)或者單引號(hào)(‘’)表示普泡。
String類型包括一些特殊字符播掷,叫“轉(zhuǎn)義序列”。這些字符字面量可以出現(xiàn)在字符串中任意位置撼班,切作為一個(gè)字符解析歧匈。
轉(zhuǎn)換字符串:toString()方法后面還得了解一下。在第5章砰嘁。