==、===、typeof 与 instanceof

2023-10-28
2分钟阅读时长

在 JavaScript 中,"==" 和 “===” 是用于比较两个值的运算符,而 “typeof” 和 “instanceof” 是用于确定值的类型的运算符。

“==” 和 “===”

“==” 运算符用于比较两个值是否相等。它会进行类型转换,并尝试将两个值转换为相同类型,然后再进行比较。例如,1 == ‘1’ 会返回 true,因为它们被转换为相同的数值类型。 “===” 运算符也用于比较两个值是否相等,但它不会进行类型转换。它要求两个值既要具有相同的值,也要具有相同的类型。例如,1 === ‘1’ 会返回 false,因为一个是数值类型,另一个是字符串类型。 “typeof”

“typeof” 运算符用于确定一个值的类型。它返回一个表示值类型的字符串。例如,typeof 42 返回 “number”,typeof ‘hello’ 返回 “string”。 值得注意的是,typeof null 返回 “object”,这是 JavaScript 的历史遗留问题。 “instanceof”

“instanceof” 运算符用于检查一个对象是否属于某个特定的类或构造函数的实例。它会检查对象的原型链,看它是否是指定类的实例或该类的子类的实例。例如,obj instanceof Array 用于检查 obj 是否是一个数组的实例。 需要注意的是,“typeof” 只能用于确定基本类型(如数字、字符串、布尔值等)和函数的类型,而不能用于确定对象的具体类型。而 “instanceof” 只能用于确定对象是否是某个类的实例,而不能用于确定基本类型的类型。