JavaScript数据类型判断

189 阅读1分钟

数据类型:

分类:

1.基本(值)类型:
  1. String:任意字符串
  2. Number:任意的数字
  3. Boolean:两个值 true/false
  4. Undefined:一个值 undefined
  5. Null:一个值 null
  6. Symbol:独一无二的值
2.对象(引用)类型:
  1. Object:任意对象
  2. Function:一种特别的对象
  3. Array:一种特别的对象

判断方法:

  1. typeof:返回数据类型的字符串表达,但是typeof不能区别null, array, object三者
var a = null;
var b = {
    b1: 1,
    b2: 2
};
var c = [1, 2];
console.log(typeof(a)); // 'object'
console.log(typeof(b)); // 'boject'
console.log(typeof(c)); // 'boject'
// 所以typeof不能区别null, array, object三者
  1. instanceof:判断对象的基本类型,判断一个对象是否是某个对象的实例。可以区别null, array, object三者, 返回值是布尔值。
console.log(null instanceof Array); // false
console.log([] instanceof Array); // true
console.log([] instanceof Object); // false
// Function:一种特别的对象
// Array:一种特别的对象

var b1 = {
  b2: [1, 'abc', true],
  b3: function () {
    console.log('b3');
  }
}
console.log(b1 instanceof Object); // true
console.log(b1 instanceof Array); // false
console.log(b1.b2 instanceof Object); // true 因为array是一种特别的对象
console.log(b1.b3 instanceof Object); // true 因为function是一种特别的对象
  1. ===
  2. 通过对象原型上的方法判断数据类型
function type(target) {
        var ret = typeof (target);
        var template = {
            "[object Array]": "array",
            "[object Object]": "object",
            "[object Number]": "number - object",
            "[object Boolean]": "boolean - object",
            "[object String]": "string - object"
        }
        if (target === null) {
            return "null";
        } else if (ret == "object") {
            var str = Object.prototype.toString.call(target);
            return template[str];
        } else {
            return ret;
        }
    }
    console.log(type(null)); // null
    console.log(type({})); // object
    console.log(type([])); // array