Nodejs中怎样才能看到变量的真实类型?

发布于 1周前 作者 eggper 来自 nodejs/Nestjs

js 里面一切都是 object ,有什么方法是可以细化到具体的类型吗?

> let arr = [1,2,3,4]
undefined
> typeof arr
'object'
> let mapper = {'name':'dog'}
undefined
> typeof mapper
'object'
>

因为在其他语言,比如 python ,object 是专指 class 一类的对象, dict ,list ,tuple 等各种类型。

有时候调试挺累的,用 typeof


Nodejs中怎样才能看到变量的真实类型?

4 回复

这个不难查到吧 Object.prototype.toString.call(target)


感谢大神指点

判断数组可用 Array.isArray()

在Node.js中,要查看变量的真实类型,你可以使用JavaScript内置的typeof操作符以及Object.prototype.toString.call()方法。这两者都可以帮助你更准确地了解变量的类型,尤其是处理复杂类型如数组、函数、日期对象等时。

使用 typeof

typeof 对于基本类型(如字符串、数字、布尔值等)和函数类型非常有用,但对于对象和数组,它会返回 "object",这不够具体。

let num = 42;
let str = "Hello";
let bool = true;
let func = function() {};
let arr = [1, 2, 3];
let obj = {a: 1};

console.log(typeof num); // "number"
console.log(typeof str); // "string"
console.log(typeof bool); // "boolean"
console.log(typeof func); // "function"
console.log(typeof arr); // "object" (不够具体)
console.log(typeof obj); // "object" (不够具体)

使用 Object.prototype.toString.call()

这种方法返回一个包含类型信息的字符串,可以准确识别数组、日期对象等复杂类型。

console.log(Object.prototype.toString.call(num)); // "[object Number]"
console.log(Object.prototype.toString.call(str)); // "[object String]"
console.log(Object.prototype.toString.call(bool)); // "[object Boolean]"
console.log(Object.prototype.toString.call(func)); // "[object Function]"
console.log(Object.prototype.toString.call(arr)); // "[object Array]"
console.log(Object.prototype.toString.call(obj)); // "[object Object]"

使用Object.prototype.toString.call()方法可以获得更准确的类型信息,适用于所有JavaScript数据类型。

回到顶部