js的數據類型主要分爲兩大類:原始(基本)數據類型,引用(複雜)數據類型數據結構
原始數據類型:number,string,boolean,null,undefinedspa
1. numberprototype
Number類型包含整數和浮點數(浮點數數值必須包含一個小數點,且小數點後面至少有一位數字)兩種值,值得注意的是NaN(not a number)也是number類型的,NaN 與其餘數值進行比較的結果老是不相等的,包括它自身在內。指針
檢測一個數是不是number類型,能夠用 isNaN(),也能夠直接用typeof()檢測。code
isNaN()返回的是一個Boolean值,也就是true和false,若是檢測的內容是數字,返回的值爲false,不然返回true對象
var num = 123;
var num1 = "mercy";
console.log(isNaN(num)); //false
console.log(isNaN(num1)); //true
typeof()直接返回的是數據的類型blog
var num = 123;
var num1 = "mercy";
console.log(typeof(num)); //number
console.log(typeof(num1)); //string
2. string字符串
字符串類型,是惟一沒有固定大小的原始類型。能夠用字符串存儲 0 或更多的字符,字符串中每一個字符都有特定的位置,首字符從位置 0 開始,第二個字符在位置 1,依此類推。這意原型
味着字符串中的最後一個字符的位置必定是字符串的長度減1。字符串通常使用雙引號("")包裹起來。string
檢測的話,只能用typeof()來檢測
var str = "hello world";
console.log(typeof(str)); //string
3. boolean
boolean的返回值只有兩種,就true或false。所以,boolean的檢測十分簡單,也是用typeof()檢測,就很少說了。
4. null
null類型被看作空對象指針,前文說到null類型也是空的對象引用。
typeof()檢測的返回值爲object。
5. undefined
只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個變量的值就是undefined。
typeof()檢測的返回值爲undefined。
引用數據類型:object
js中對象是一組屬性與方法的集合。這裏就要說到引用類型了,引用類型是一種數據結構,用於將數據和功能組織在一塊兒。引用類型有時候也被稱爲對象定義,由於它們描述的是一類
對象所具備的屬性和方法。
typeof()檢測的返回值爲object。
從上面就能夠看出,有兩種數據類型的檢測,返回的都是object,其實還要一種數據類型array,用typeof()檢測,它的返回類型也是object,那麼問題來了,如何區分這三種數據類型呢?
判斷類型的方法不少,這裏我就只說一種:toString()方法。
toString()方法,這個是利用對象的原型來判斷。在js中,有萬物皆對象的說法,所以咱們就能夠利用Object.prototype.toString.call(檢測的數據)來檢測。
var num = 100;
var str = "hello world";
var arr = [1,2,3,4,5];
var obj = {
name : "張三",
age : 30,
sex : "男"
}
var nul = null;
var bool = true;
console.log(Object.prototype.toString.call(num)); //[object Number]
console.log(Object.prototype.toString.call(str)); //[object String]
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(Object.prototype.toString.call(obj)); //[object Object]
console.log(Object.prototype.toString.call(nul)); //[object Null]
console.log(Object.prototype.toString.call(bool)); //[object Boolean]