javascript中查看变量类型的几种方法

1,使用typeof运算符来查看一个变量的类型,例如:

var str = "Hello World";
console.log(typeof str); // 输出 "string"var num = 123;
console.log(typeof num); // 输出 "number"var bool = true;
console.log(typeof bool); // 输出 "boolean"var arr = [1, "two", false];
console.log(typeof arr); // 输出 "object"

如果要查看数组或对象中成员的类型,可以使用Array.isArray()方法判断是否是数组,并循环遍历数组或对象中的成员进行类型检查。例如:

var arr = [1, "two", false];

if (Array.isArray(arr)) {
  for (var i = 0; i < arr.length; i++) {
    console.log(typeof arr[i]);
  }
}

输出结果为:

number
string
boolean

同理,对于对象也可以使用for...in循环遍历对象属性进行类型检查。例如:

var obj = {name: "Tom", age: 18};

for (varkeyin obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(key + " : " + typeof obj[key]);
  }
}

输出结果为:

name : string
age : number

2,instanceof运算符:可以用来检测对象是否属于某个类或构造函数的实例。例如:

Copy Codevar arr = [1,2,3];
console.log(arr instanceof Array); // 输出 true

3,Array.isArray()方法:可以用来检测一个变量是否为数组类型。例如:

var arr = [1,2,3];
console.log(Array.isArray(arr)); // 输出 true
4,Object.prototype.toString.call()方法:可以用来获取一个变量的类型字符串。可以通过将变量作为call()方法的参数来获取其类型字符串。例如:
var arr = [1,2,3];
console.log(Object.prototype.toString.call(arr)); // 输出 "[object Array]"

使用这种方式可以精确地判断一个变量的具体类型,甚至包括内置对象和自定义对象等。

5,value.constructor(或者value.constructor.name)我觉得这种方法最好用

对于大多数值,可以通过访问 value.constructor 属性来获取构造函数并判断值的类型。但请注意,对于 undefined 和 null 这样的特殊值,它们没有 constructor 属性,因此访问会导致报错。

console.log((123).constructor === Number);  // true
console.log('hello'.constructor === String);  // true
console.log(true.constructor === Boolean);  // true
console.log(undefined.constructor === undefined);  // 报错
console.log(null.constructor === null);  // 报错
console.log([].constructor === Array);  // true
console.log({}.constructor === Object);  // true
console.log((function() {}).constructor === Function);  // true

需要注意的是,在ES6之后,还引入了新的类型检测方式,比如Symbol.toStringTag、Symbol.hasInstance等。但这些方法的使用场景比较特殊,一般情况下不太常用。

你可能感兴趣的:(autojs,javascript)