JavaScript typeof、null 和 undefined
typeof 操作符
你可以使用 typeof 操作符來檢測(cè)變量的數(shù)據(jù)類型。
typeof(的)運(yùn)算數(shù)未定義,返回(的)就是 "undefined".?
運(yùn)算數(shù)為數(shù)字?typeof(x) = "number"?
字符串?typeof(x) = "string"?
布爾值?typeof(x) = "boolean"?
對(duì)象,數(shù)組和null?typeof(x) = "object"?
函數(shù)?typeof(x) = "function"
typeof?運(yùn)算符返回一個(gè)用來表示表達(dá)式(的)數(shù)據(jù)類型(的)字符串。?
可能(的)字符串有:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。
如:?
alert(typeof?(123));//typeof(123)返回"number"?
alert(typeof?("123"));//typeof("123")返回"string"
typeof?運(yùn)算符返回一個(gè)用來表示表達(dá)式(的)數(shù)據(jù)類型(的)字符串。?
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "john" + "<br>" + typeof 3.14 + "<br>" + typeof false + "<br>" + typeof [1,2,3,4] + "<br>" + typeof {name:'john', age:34}; </script> </body> </html>
空值(Null)
空值類型表示該變量或內(nèi)容無任何值。例如一個(gè)表單文本輸入框中無任何內(nèi)容時(shí),我們?cè)噲D用 JavaScript 去獲取該文本輸入框元素的值時(shí),得到的結(jié)果就是 null。
要判斷是否為空值,只需將需要比較的內(nèi)容與 null 進(jìn)行比較即可:
if( x == null ) { ... }
鑒于 Web 系統(tǒng)運(yùn)行的特點(diǎn),很多情況下可以通過給一個(gè)變量賦 null 值來清除變量的內(nèi)容而不用特意去銷毀該變量。
未定義(Undefined)
變量被創(chuàng)建后,未給該變量賦值,該變量即為未定義類型。未定義類型有一個(gè)確定的值 undefined,因此要判斷一個(gè)變量或返回結(jié)果是否為未定義類型,只需將它與 undefined 進(jìn)行比較即可:
if( x == undefined ) { ... }
Undefined 和 Null 的區(qū)別
Undefined類型只有一個(gè)值,即undefined。當(dāng)聲明的變量還未被初始化時(shí),變量的默認(rèn)值為undefined。
Null類型也只有一個(gè)值,即null。null用來表示尚未存在的對(duì)象,常用來表示函數(shù)企圖返回一個(gè)不存在的對(duì)象。
undefined表示一個(gè)變量沒有被聲明,或者被聲明了但沒有被賦值(未初始化),一個(gè)沒有傳入實(shí)參的形參變量的值為undefined,如果一個(gè)函數(shù)什么都不返回,則該函數(shù)默認(rèn)返回undefined;
null是一個(gè)表示“沒有值”的值;
Javascript將未賦值的變量默認(rèn)值設(shè)為undefined;
Javascript從來不會(huì)將變量設(shè)為null。它是用來讓程序員表明某個(gè)用var聲明的變量時(shí)沒有值的;
undefined不是一個(gè)有效的JSON,而null是;undefined的類型(typeof)是undefined;
null的類型(typeof)是object. ;
它們都是基本類型;
他們都是falsy (Boolean(undefined)?->// false,?Boolean(null)?->// false);
你可以這樣判斷一個(gè)變量是否是undefined。typeof variable === "undefined";
你可以這樣判斷一個(gè)變量是否是null。variable === null;
雙等號(hào)比較時(shí)它們相等(null==undefined?->// true),但三等號(hào)比較時(shí)不相等(null===undefined->// false);
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof undefined + "<br>" + typeof null + "<br>" + (null === undefined) + "<br>" + (null == undefined); </script> </body> </html>