【每日一问】node.js中是如何判断类型的?

JavaScript中的类型

在ECMAScript标准中,一共有八种数据类型:

  • 7种原始类型
    • Boolean
    • Null
    • Undefined
    • Number
    • BigInt
    • String
    • Symbol
  • Object

那么问题来了,应该如何判断这些类型?下面是node中判断上述类型的相关代码(BigInt除外),基本上基于typeof进行判断。说到typeof那就不得不提下面的话题:

知识储备

typeof对null类型错误的返回值

下面直接引用MDN的解释
image.png

null错误,考古文传送门

因此后面的代码对于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';
}

以上代码在仓库中的位置

node代码传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值