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"
如果要检查链表或对象中成员的类型javascript变量的类型,可以使用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()方法:可以用来获取变量的类型string。 您可以通过将变量作为参数传递到 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等特殊值,它们没有构造函数属性,因此访问会导致错误。
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
需要注意的是javascript变量的类型,ES6之后,引入了新的类型检查方法,例如Symbol.toStringTag、Symbol.hasInstance等。不过该方法的使用场景比较特殊,一般情况下并不常用。