1. typeof獲取未定義的變量也為undefined
var message; // 這個(gè)變量聲明之后默認(rèn)取得了 undefined 值
// 下面這個(gè)變量并沒(méi)有聲明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
2.typeof判斷數(shù)組類型的缺陷
typeof([]) //object
第一鐘解決方案
[] instanceof Array //適用場(chǎng)景限制 只適用在與數(shù)組初始化相同的環(huán)境下才有xiao
common deals
Object.prototype.toString.call([]) //無(wú)限制 jq $.type源碼也是這樣實(shí)現(xiàn)的。
3.自動(dòng)轉(zhuǎn)換為boolean
建議通過(guò)!!a方式,===和!== 避免弱類型轉(zhuǎn)換

image.png
4.NaN
NaN 本身有兩個(gè)非同尋常的特點(diǎn)。首先,任何涉及 NaN 的操作(例如 NaN/10)都會(huì)返回 NaN,這
個(gè)特點(diǎn)在多步計(jì)算中有可能導(dǎo)致問(wèn)題。其次,NaN 與任何值都不相等,包括 NaN 本身。例如,下面的代
碼會(huì)返回 false:
alert(NaN == NaN); //false
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一個(gè)數(shù)值)
alert(isNaN("10")); //false(可以被轉(zhuǎn)換成數(shù)值 10)
alert(isNaN("blue")); //true(不能轉(zhuǎn)換成數(shù)值)
alert(isNaN(true)); //false(可以被轉(zhuǎn)換成數(shù)值 1)
5.Number()、parseInt()和 parseFloat()
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1
用 parseInt()轉(zhuǎn)換空字符串會(huì)返回 NaN(Number()對(duì)空字符返回 0)。如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符。例如,"1234blue"會(huì)被轉(zhuǎn)換為 1234,因?yàn)?blue"會(huì)被完全忽略。類似地,"22.5"會(huì)被轉(zhuǎn)換為 22,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。