基于Javascript中的typeof和类型判断(详解)
typeof
typeof
运算符可以用来判断一个变量的数据类型,语法如下:
typeof operand
其中 operand
是需要判断的变量或值。typeof
运算符会返回以下几种类型的字符串值:
"undefined"
:如果operand
未定义或未声明"boolean"
:如果operand
是布尔类型"number"
:如果operand
是数值类型(包括整数和浮点数)"string"
:如果operand
是字符串类型"symbol"
:如果operand
是 Symbol 类型(ES6 新增)"object"
:如果operand
是对象类型(包括 null 和数组)"function"
:如果operand
是函数类型
以下是一个使用 typeof
判断数据类型的示例:
let value1; // 未定义变量
let value2 = null; // 值为 null 的变量
let value3 = true; // 布尔类型变量
let value4 = 123; // 数值类型变量
let value5 = "hello"; // 字符串类型变量
let value6 = {}; // 空对象
let value7 = []; // 空数组
let value8 = function() {}; // 空函数
console.log(typeof value1); // 输出:"undefined"
console.log(typeof value2); // 输出:"object"
console.log(typeof value3); // 输出:"boolean"
console.log(typeof value4); // 输出:"number"
console.log(typeof value5); // 输出:"string"
console.log(typeof value6); // 输出:"object"
console.log(typeof value7); // 输出:"object"
console.log(typeof value8); // 输出:"function"
需要注意的是, typeof null
返回的是 "object"
,这是 Javascript 中一个已知的 Bug。
类型判断
在 Javascript 中,除了使用 typeof
运算符之外,还可以使用其他方法来判断一个变量的数据类型,常用的方法包括 instanceof
运算符、Object.prototype.toString
方法等。
instanceof 运算符
instanceof
运算符用来判断一个变量是否为指定类型的实例,语法如下:
object instanceof constructor
其中 object
是需要判断的变量或值,constructor
是要判断的类型(构造函数)。
以下是一个使用 instanceof
判断数据类型的示例:
let value1 = [];
let value2 = {};
console.log(value1 instanceof Array); // 输出:true
console.log(value1 instanceof Object); // 输出:true
console.log(value2 instanceof Array); // 输出:false
console.log(value2 instanceof Object); // 输出:true
需要注意的是, instanceof
运算符的右操作数必须是一个构造函数,而且和左操作数的原型链中至少有一个相同的对象,否则会返回 false
。
Object.prototype.toString 方法
Object.prototype.toString
方法用来返回一个对象的字符串表示,语法如下:
Object.prototype.toString.call(object)
其中 object
是需要判断的变量或值。
以下是一个使用 Object.prototype.toString
判断数据类型的示例:
let value1 = null;
let value2 = undefined;
let value3 = true;
let value4 = 123;
let value5 = "hello";
let value6 = {};
let value7 = [];
let value8 = function() {};
console.log(Object.prototype.toString.call(value1)); // 输出:"[object Null]"
console.log(Object.prototype.toString.call(value2)); // 输出:"[object Undefined]"
console.log(Object.prototype.toString.call(value3)); // 输出:"[object Boolean]"
console.log(Object.prototype.toString.call(value4)); // 输出:"[object Number]"
console.log(Object.prototype.toString.call(value5)); // 输出:"[object String]"
console.log(Object.prototype.toString.call(value6)); // 输出:"[object Object]"
console.log(Object.prototype.toString.call(value7)); // 输出:"[object Array]"
console.log(Object.prototype.toString.call(value8)); // 输出:"[object Function]"
需要注意的是,Object.prototype.toString
方法返回的字符串包含了变量的数据类型信息,其中 "Null"
、"Undefined"
、"Boolean"
、"Number"
、"String"
、"Object"
、"Array"
、"Function"
等字符串是不能改变的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于javascript中的typeof和类型判断(详解) - Python技术站