Nodejs中怎样才能看到变量的真实类型?
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数据类型。