判斷undefined
大多數(shù)計算機語言被去,有且僅有一個表示"無"的值店诗,比如压固,用過可知C語言的NULL,Java語言的null置森,查詢可知Python語言的None,Ruby語言的nil符糊,但是javascript是不一樣的煙火凫海,它有兩個表示"無"的值:undefined和null。這是為什么濒蒋?
1盐碱,歷史的行程
1995年JavaScript誕生時如早一年的Java一樣,用null作為表示"無"的值沪伙。根據(jù)C語言的傳統(tǒng)瓮顽,null被設(shè)計成可以自動轉(zhuǎn)為0,設(shè)計Brendan Eich覺得這樣做還不夠围橡,因為暖混,null在Java里被當成一個對象。但是翁授,JavaScript的數(shù)據(jù)類型分成原始類型(primitive)和合成類型(complex)兩大類拣播,Brendan Eich覺得表示"無"的值最好不是對象。其次收擦,JavaScript的最初版本沒有包括錯誤處理機制贮配,發(fā)生數(shù)據(jù)類型不匹配時,往往是自動轉(zhuǎn)換類型或者默默地失敗塞赂。Brendan Eich覺得泪勒,如果null自動轉(zhuǎn)為0,很不容易發(fā)現(xiàn)錯誤宴猾。因此圆存,Brendan Eich又設(shè)計了一個undefined。
2.關(guān)于undefined
undefined 表示一個未聲明的變量仇哆,或已聲明但沒有賦值的變量沦辙,或一個并不存在的對象屬性,函數(shù)沒有返回值時讹剔,默認返回undefined油讯。這是undefined的幾種典型用法详民,而判斷一個變量是不是undefined,用typeof函數(shù)撞羽,typeof函數(shù)主要是返回的是字符串阐斜,主要這么幾種:"number"、"string"诀紊、"boolean"谒出、"object"、"function"邻奠、"undefined"