一赊颠、js的數(shù)據(jù)類型
Null格二、Undefined、Boolean巨税、Number蟋定、String、Array草添、Object
還能叫得出名字的還有:NaN(Not a Number)驶兜、正則(RegExp)、日期(Date)远寸、函數(shù)(Function)抄淑、arguments等等,其中NaN屬于Number類型驰后,正則肆资、日期、函數(shù)灶芝、arguments屬于Object郑原,感覺js的數(shù)據(jù)類型有點(diǎn)亂唉韭。
二、js數(shù)據(jù)類型的分類:值類型犯犁、引用類型
// 值類型
console.log(typeof(x));? ? // undefined
console.log(typeof(10));? // number
console.log(typeof('abc')); // string
console.log(typeof(true));? // boolean
console.log(typeof (null));? //object ==> 結(jié)果是object属愤,但是屬于值類型
// 引用類型
console.log(typeof(function () { }));? //function
console.log(typeof([1, 'a', true]));? //object
console.log(typeof ({ a: 10, b: 20 }));? //object
console.log(typeof (new Number(10)));? //object
typeof對js數(shù)據(jù)的判斷結(jié)果共有6種:
undefined, number, string, boolean, function, object
1、分類:
簡單的值類型(不是對象):null酸役、undefined住诸、boolean、number涣澡、string贱呐。
復(fù)雜的引用類型(是對象):函數(shù)、數(shù)組入桂、對象奄薇、new Number(10)、new String('10')事格、new Boolean(true)惕艳、正則、日期等等驹愚。
2远搪、為什么說null不是對象呢?typeof null 的值不是object嗎逢捺?
a. 它老祖宗都不認(rèn)他谁鳍。
console.log(null instanceof Object); // false
b. 對象的定義是:若干屬性的集合,而null不符合對象的定義劫瞳,不是引用類型倘潜。
var nullType = null;
nullType.a = 123; // 報(bào)錯(cuò) ==> Unexpected token .
綜上:null不是一個(gè)對象,不是復(fù)雜的引用類型志于。null最初是用來表示空對象的涮因,但是不屬于對象。typeof對null的判斷是js的一個(gè)bug伺绽。
三养泡、如何判斷一個(gè)變量的數(shù)據(jù)類型
1、值類型的類型判斷用typeof
// 值類型
console.log(typeof(x));? ? // undefined
console.log(typeof(10));? // number
console.log(typeof('abc')); // string
console.log(typeof(true));? // boolean
//雖然function也是一個(gè)引用類型對象奈应,但是可以通過typeof判斷:
var fn = function() {};
console.log(typeof fn); // function
如何判斷null類型澜掩?用 ===:
console.log(null === null); // true
不能用 == ,因?yàn)椋?/p>
console.log(null == undefined); // true
console.log(null === undefined); // false
2杖挣、引用類型的類型判斷用instanceof
//引用類型
console.log(new String('string') instanceof String); // true
console.log(new Number(10) instanceof Number); // true
console.log(new Boolean(true) instanceof Boolean); // true
console.log(new Array(3,4,5) instanceof Array); // true
console.log([] instanceof Array); // true
var fn = function() {}
console.log(fn instanceof Function); // true