typeof, null, 和 undefined數組
typeof 操做符返回一個字符串,表示未經求值的操做數(unevaluated operand)的類型。瀏覽器
語法:typeof operand 參數:operand 是一個表達式,表示對象或原始值,其類型被返回。 描述E:此表總結了 typeof 可能的返回值。函數
類型 | 結構 |
---|---|
Undefined | "undefined" |
Null | "object" |
布爾值 | "boolean" |
數值 | "number" |
字符串 | "string" |
Symbol (ECMAScript 6 新增) | "symbol" |
宿主對象(JS環境提供的,好比瀏覽器) | Implementation-dependent |
函數對象 (implements [[Call]] in ECMA-262 terms) | "function" |
任何其餘對象 | "object" |
實例:編碼
typeof "John" // 返回 string typeof "" // 返回 string typeof 3.14 // 返回 number typeof true // 返回 boolean typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object typeof {name:'John', age:34} // 返回 object
Notes:
在JavaScript中,數組是一種特殊的對象類型。 所以 typeof [1,2,3,4] 返回 object。lua
null 是一個 JavaScript 字面量,表示空值(null or an "empty" value),表示 "什麼都沒有"。即沒有對象被呈現(no object value is present)。 null 是一個只有一個值的特殊類型。表示一個空對象引用。它是 JavaScript 的原始值之一。 null 是一個字面量(而不是全局對象的一個屬性,undefined 是)code
Note: 用 typeof 檢測 null 返回是object。
Note: ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。對象
實例ip
能夠設置爲 null 來清空對象: var person = null; // Value is null, but type is still an object 也能夠設置爲 undefined 來清空對象: var person = undefined; // 值爲 undefined, type is undefined
undefined有多重角色,一般狀況下,咱們所說的undefined都指的是全局對象的一個屬性"undefined".文檔
在 JavaScript 中, undefined 是一個沒有設置值的變量。typeof 一個沒有值的變量會返回 undefined。字符串
一個未初始化的變量的值爲undefined. 一個沒有傳入實參的形參變量的值爲undefined. 若是一個函數什麼都不返回,則該函數默認返回undefined.
在JavaScript中,undefined這個詞有多重含義:
(1) 首字母大寫的Undefined表示的是一種數據類型; (2) 小寫的undefined表示的是屬於這種數據類型的惟一的一個值; 但這兩種undefined都只能存在於文檔或規範中,不能存在於JavaScript代碼中.在JavaScript代碼中,咱們看到的undefined最有多是全局對象的一個屬性,該屬性的初始值是就是前面所說的原始值undefined.
還有種狀況就是,這個undefined是個局部變量,就像其餘普通變量同樣,沒有任何特殊性,它的值不必定是undefined,但一般狀況下都是的.下面咱們所說的undefined,都指的是window.undefined這個屬性.
實例:
var person; // Value is undefined, type is undefined 可使用嚴格相等運算符來判斷一個值是不是undefined: var x; if ( x === undefined ) { // 執行到這裏 } else { // 不會執行到這裏 }
這裏必須使用嚴格相等運算符===,而不能使用普通的相等運算符==.
由於x == undefined成立還多是由於x爲null,在JavaScript中null== undefined是返回true的.
另外,還可使用typeof來判斷:
var x; if (typeof x === 'undefined') { // 執行到這裏 }
任何變量均可以經過設置值爲 undefined 來清空。 類型爲 undefined. 實例 person = undefined; // 值爲 undefined, type is undefined
NaN 是一個全局對象的屬性,表示 Not-A-Number 的值,是一個特殊值。
在編碼不多直接使用到 NaN。一般都是在計算失敗時,做爲 Math 的某個方法的返回值出現的(例如:Math.sqrt(-1))或者嘗試將一個字符串解析成數字但失敗了的時候(例如:parseInt("blabla"))。
NaN 不等於本身, 即 NaN == NaN 返回的是 false 判斷一個值是不是 NaN, 必須使用 Number.isNaN() 或 isNaN() 函數
isNaN() 函數用於檢查其參數是不是非數字值。 isNaN() 函數一般用於檢測 parseFloat() 和 parseInt() 的結果,以判斷它們表示的是不是合法的數字。固然也能夠用 isNaN() 函數來檢測算數錯誤,好比用 0 做除數的狀況。 若是isNaN函數的參數不是Number類型, isNaN()會首先嚐試將這個參數轉換爲數值,而後纔會對轉換後的結果是不是NaN進行判斷。
isNaN(123); // 返回 false isNaN(-1.23); // 返回 false isNaN(5-2); // 返回 false isNaN(0); // 返回 false isNaN("0"); // 返回 false isNaN(true); // 返回 false: 由於Number(true)是1 isNaN(false); // 返回 false: 由於Number(false)是0 isNaN(null); // 返回 false: 由於Number(null)是0 isNaN("Hello"); // 返回 true isNaN("2016/07/11"); // 返回 true isNaN(NaN); // 返回 true isNaN(undefined); // 返回 true isNaN({}); // 返回 true // dates isNaN(new Date()); // 返回 false isNaN(new Date().toString()); // 返回 true
typeof undefined // 返回undefined typeof null // 返回object (bug in ECMAScript, should be null) null === undefined // 返回false null == undefined // 返回true
undefined是JavaScript提供的一個"關鍵字",而"undefined"就是一個字符串,只是字符串的內容長得和undefined同樣而已。
typeof undefined // 返回undefined typeof "undefined" // 返回string
http://www.w3school.com.cn/jsref/jsref_isNaN.asp
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isNaN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined