JavaScript中的类型
在ECMAScript标准中,一共有八种数据类型:
7种原始类型
- Boolean
- Null
- Undefined
- Number
- BigInt
- String
- Symbol
- Object
那么问题来了,应该如何判断这些类型?下面是node中判断上述类型的相关代码(BigInt除外),基本上基于typeof
进行判断。说到typeof
那就不得不提下面的话题:
知识储备
typeof对null类型错误的返回值
下面直接引用MDN的解释
因此后面的代码对于typeof null === 'object'
这个问题,有所兼容。
还有一个问题就是,在上面的定义中,一共有七种原始类型,那么问题来了:
什么是原始类型?
MDN中的解释为:
除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。
知识储备完毕,我们下面开始判断类型:
node.js中判断源码
如何判断原始类型?
function isPrimitive(arg) {
return arg === null ||
(typeof arg !== 'object' && typeof arg !== 'function');
}
如何判断布尔类型?
function isBoolean(arg) {
return typeof arg === 'boolean';
}
如何判断null?
function isNull(arg) {
return arg === null;
}
如何判断undefined?
function isUndefined(arg) {
return arg === undefined;
}
如何判断null或undefined?
function isNullOrUndefined(arg) {
return arg === null || arg === undefined;
}
如何判断数字类型?
function isNumber(arg) {
return typeof arg === 'number';
}
如何判断字符串类型?
function isString(arg) {
return typeof arg === 'string';
}
如何判断symbol类型?
function isSymbol(arg) {
return typeof arg === 'symbol';
}
如何判断对象类型?
function isObject(arg) {
return arg !== null && typeof arg === 'object';
}
如何判断是函数?
function isFunction(arg) {
return typeof arg === 'function';
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。