基本数据类型
简单的数据类型:Number、String、Boolean、Null、Undefined、Symbol (new in ECMAScript 2015)、BigInt (new in ECMAScript 2020)
复杂的数据类型:Arry、Object、Function
判断方法
注意:需要确定某种数据类型均不建议使用 ‘==’,建议使用’ ===’。
以下打印结果都为真
// Number类型
var num = 12;
console.log(typeof num === 'number');
// console.log(num instanceof Number);//不能判断
//String类型
var str = "fgbb";
console.log(typeof str === 'string');
// console.log(str instanceof String);//不能判断
//Boolean类型
var tag = true;
console.log(typeof tag === 'boolean');
//Null
var nu = null;
console.log(typeof nu === 'object');
//Undefined
var un;
console.log(typeof un === 'undefined');
//Symbol
//Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分。
var sym = Symbol("sym");
sym = "any"
console.log(typeof sym === 'symbol');
//BigInt
var big = 12345n;
console.log(typeof big === 'bigint');
// Arry
var arr = [1,2,3,4,5,6];
// Object
var obj = {
name: "Bob",
age: 18
}
// Function
function fn(){}
// instanceof
console.log(obj instanceof Object);
console.log(arr instanceof Array);
// __proto__
console.log(arr.__proto__ === Array.prototype);
console.log(obj.__proto__ === Object.prototype);
console.log(fn.__proto__ === Function.prototype);
console.log(Array.prototype.isPrototypeOf(arr));
console.log(Object.prototype.isPrototypeOf(obj));
console.log(Function.prototype.isPrototypeOf(fn));
console.log(Object.getPrototypeOf(arr) === Array.prototype);
console.log(Object.getPrototypeOf(obj) === Object.prototype);
// console.log(Function.getPrototypeOf(fn) === Function.prototype);//不能判断是否为一个函数
// constructor
console.log(arr.constructor === Array);
console.log(obj.constructor === Object);
console.log(fn.constructor === Function);
// es6新增的判断数组的方法
console.log(Array.isArray(arr));