内置类型
1. 前言
JavaScript 是一种动态类型语言,变量是没有类型的,值才有类型。类型是值的内部特征,定义了值的行为,使其和其他类型值有所区分。
2. 内置类型
在JavaScript中值有7种内置类型:
- null 空值
- undefined 未定义
- boolean 布尔值
- number 数字
- string 字符串
- object 对象
- symbol 符号,ES6新增类型
2.1 typeof 判断值类型
2.1.1 直接判断
内置类型中有5种类型可以使用typeof来判断:
- undefined 未定义
- boolean 布尔值
- number 数字
- string 字符串
- symbol 符号
// 'undefined'
console.log(typeof undefined);
// 'boolean'
console.log(typeof false);
// 'number'
console.log(typeof 42);
// 'string'
console.log(typeof '42');
// 'symbol'
console.log(typeof Symbol());
2.1.2 判断null:
// 1. 使用 ===
a === null
// 2. 使用复合条件判断
(!a && type a === 'object')
2.1.3 判断object
object有两个子类型:function 和 array
var obj = {};
var func = function() {};
var arr = [];
// object
console.log(typeof obj);
// function
console.log(typeof func);
// object
console.log(typeof arr);
2.2 Object.prototype.toString.call() 判断值类型
// [object String]
Object.prototype.toString.call("jerry");
// [object Number]
Object.prototype.toString.call(12);
// [object Boolean]
Object.prototype.toString.call(true);
// [object Undefined]
Object.prototype.toString.call(undefined);
// [object Null]
Object.prototype.toString.call(null);
// [object Object]
Object.prototype.toString.call({name: "jerry"});
// [object Function]
Object.prototype.toString.call(function(){});
// [object Array]
Object.prototype.toString.call([]);
// [object Date]
Object.prototype.toString.call(new Date);
// [object RegExp]
Object.prototype.toString.call(/\d/);
小贴士
1. 真值-假值
类型 | false | true |
---|---|---|
null | null | |
undefined | undefined | |
boolean | false | true |
number | 0 | 非0 |
string | ‘’(空字符串) | 非空字符串 |
object | object |