如何在 JavaScript 中检查类型

2025年1月7日 | 5 分钟阅读

JavaScript 是一种允许我们在运行时为变量赋值的语言。同样,在编程时确定变量类型和值类型的能力变得很重要。然而,JavaScript 中有许多处理此问题的方法可以确保变量是特定类型或具有已定义的值。在本文中,我们将通过研究论文探讨它们,并为您提供相关的示例和解释。

typeof 运算符的实现

typeof 运算符返回的字符串会揭示操作数的确切类型。了解确切的值或变量是学习此知识的最佳方法。

输出

"number"
"string"
"boolean"

对于 typeof x 等于“number”,表示 x 的值被赋值为数字。

当 y 为字符串类型时,typeof y 返回“string”。

由于 z 是一个布尔变量,typeof z 函数将结果为“boolean”。

使用 instanceof 运算符

运算符类还有更多内容,它不仅提供运算符作为运算符,还提供运算符实例。

instanceof 运算符用于检查一个对象是否属于某个特定类。它将对象中的项目归类为属于某个类或其子类。

输出

True
true

这是因为 arr 是 Array 类的实例;因此,instanceof Array 求值为 true。

由于 obj 属于 Object 类,obj instanceof Object 的结果为 true。

在 Array 中使用 isArray()

Array.isArray() 函数用于检查传递的值是否为数组。

由于 arr 是一个数组,Array.isArray(arr) 返回 true。

由于 obj 不是数组,因此 Array.isArray(obj) 方法不适用,它返回 false。

将 .call() 应用于 Object.prototype.toString

这种方法将是识别对象性质的更可靠的方法。

输出

[object Number]
[object String]
[object Boolean]
[object Function]
[object Array]
[object Object]

解释

函数 Object.prototype.toString.call(value) 将返回对象的值。创建无错误且正确的有效代码是了解如何在 JavaScript 中表达变量或值的类型的功能。

通过使用 typeof、instanceof、Array.isArray() 和 Object.prototype.toString.call() 等方法,开发人员现在可以准确地查找其 JavaScript 应用程序中的变量或值的类型。这确保了不会有错误的风险和不正确的操作。

将 typeof 与函数和 null 一起使用

重要的是要记住,在处理某些类型(如函数和 null)时,typeof 的行为有时很奇怪。

示例: JavaScript 中有一个已知的矛盾,即 typeof nullValue 返回“object”而不是“null”。

变量 func 的函数类型由 typeof func 返回的“function”值显示。

使用 isNaN() 检查 NaN

JavaScript 在处理数值时可能会返回 NaN(非数字),尤其是在执行除以零或不正确的数学运算等运算时。isNaN() 方法可用于检查 NaN。

解释: 由于 result1 是 Infinity,它被视为数值,因此 isNaN(result1) 返回 false。

由于将字符串除以数字是不正确的运算,因此 isNaN(result2) 返回 true,因为 result2 是 NaN。

了解开发人员使用的 JavaScript 类型检查方法使他们能够确保代码按预期运行。能够使用 typeof 进行基本类型检查,instanceof 进行对象类型检查,以及 Array.isArray() 进行数组检查,对于开发人员构建更可靠、可重用的 JavaScript 程序很有用。

此外,拥有详细且奇特的特性 - 例如 typeof null 返回“object”或使用 isNaN() 来管理 NaN - 使我们能够更熟练、更流畅地驾驭类型系统。开发人员通过遵循建议的技术并在其编码实践中应用它们,可以避免错误并为更好的代码完整性做出贡献。

使用 typeof 处理未定义变量

当对尚未声明或初始化的变量应用 typeof 运算符时,JavaScript 会显示“undefined”。首先,这将有助于确定变量是否已定义或设置为某个值。

原因: 由于 x 和 y 都已声明但未定义,因此 typeof 会返回“undefined”给它们两者。

对象属性检查

在某些情况下,您可能需要询问一个项是否具有特定属性。您可以通过 hasOwnProperty() 函数或 in 运算符来完成此操作。

例如

理由: 如果“name”属性可用,则 person 对象将被赋予“name”。

person 中的“gender”是用于识别“gender”属性的对象。

语句“person.hasOwnProperty("name")”检查对象“person”是否具有其自身属性。

通过检查 person.hasOwnProperty("gender") 的存在来测试 person 对象是否已设置“gender”属性。

使用 typeof 对函数和对象进行细分

但是,typeof 无法区分标准对象和函数;它确实为函数返回“function”值。您还可以使用 typeof 来强调一个值是否为函数,然后执行一系列测试以将其与其他类型的对象区分开来。

输出

True
false 

这是因为 since welcome 是一个函数,typeof greet === "function" 的结果为 true。

person 不是函数,因此 typeof person === "function" 的结果为 false。

结论

编写可靠的 JavaScript 代码需要理解类型检查。为了可靠地确定类型,JavaScript 有几种技术,包括 typeof、instanceof 和对象属性检查。这些可以与原始类型、对象或函数一起使用。通过有效地利用这些策略,开发人员可以构建更清晰、更易于维护的代码,这些代码可以正确处理各种数据类型。这提高了开发人员的生产力和软件质量。