如何在 JavaScript 中检查变量或对象的类型?
JavaScript 是一种弱类型编程语言,这意味着没有声明变量类型的规则。一个变量可以在程序中存储多种数据类型,因此在使用变量之前了解变量类型至关重要。在 JavaScript 中,我们可以使用 `typeof` 运算符来检查变量或对象的类型。`typeof` 运算符接受一个变量并返回其类型的字符串格式。
除了 `typeof` 运算符之外,JavaScript 还提供 `instanceof` 运算符来检查变量或对象的类型。`instanceof` 运算符接受两个参数:要检查的对象和要检查类型的构造函数。如果构造函数是对象的类型,则运算符将返回 true。
使用 typeof 运算符
`typeof` 运算符是一个一元运算符,它接受一个参数并返回一个字符串,指示该参数的类型。例如,`typeof` 运算符可以用来检查变量或对象的类型。
语法
typeof variable_name
在上面的语法中,`variable_name` 是您想要确定其类型的变量的名称。
`typeof` 运算符可以返回以下字符串之一:
"number" 用于数字
"string" 用于字符串
"boolean" 用于布尔值
"undefined" 用于未定义的值
"object" 用于对象(包括数组和函数)
"symbol" 用于符号(ECMAScript 2015 中新增)
示例
在这个例子中,我们使用 `typeof` 运算符来检查 JavaScript 中变量或对象的类型。我们声明了不同类型的多个变量,例如数字、字符串、布尔值等。我们在网页上显示了这些变量。我们在按钮上使用了点击事件处理程序来检查变量的类型。用户每次点击按钮时,都可以在网页上看到所有变量及其各自的类型。`typeof` 运算符有助于在执行特定操作之前确定变量或对象的类型。例如,您可能使用它来确保变量在执行算术运算之前是数字,或者变量在与另一个字符串连接之前是字符串。
<html> <body> <h2>Checking the <i> type of a variable or object </i> in JavaScript</h2> <h4>The variables are as follows:</h4> <ul> <li>let num = 10</li> <li>let str = "Hello"</li> <li>let bool = true</li> <li>let un</li> <li>let n = null</li> <li>let arr = [1, 2, 3]</li> <li>let func = function () {}</li> </ul> <button onclick = "checkType()"> Check Type </button> <div id = "root"> </div> <script> let num = 10 let str = 'Hello' let bool = true let un let n = null let arr = [1, 2, 3] let func = function () {} let root = document.getElementById('root') function checkType() { root.innerHTML = '<h4>The types of variables are as follows:</h4>' root.innerHTML += '<ul> <li> let num = 10 is a ' + typeof num + ' </li> <li> let str = "Hello" is a ' + typeof str + ' </li> <li> let bool = true is a ' + typeof bool + ' </li> <li> let un is a ' + typeof un + ' </li> <li> let n = null is a ' + typeof n + ' </li> <li> let arr = [1, 2, 3] is a ' + typeof arr + ' </li> <li> let func = function () {} is a ' + typeof func + ' </li> </ul> ' } </script> </body> </html>
使用 instanceof 运算符
在 JavaScript 中,`instanceof` 运算符用于在运行时确定对象的类型。它返回一个布尔结果,指示该对象是否是特定类的实例。
语法
object_name instanceof object_constructor
在上面的语法中,`object_name` 是您想要确定其类型的对象的名称。
示例
在这个例子中,我们使用 `instanceof` 运算符来检查 JavaScript 中变量或对象的类型。我们声明了一个使用 String 类构造函数的字符串类型变量和一个自定义类对象“myClassObject”,它是“myClass”的对象,并在网页上显示它们。我们在按钮上使用了点击事件处理程序来检查对象的类型,并在网页上显示它们。
<html> <body> <h2>Checking the <i> type of a variable or object </i> in JavaScript</h2> <h4>The object variables are as follows:</h4> <ul> <li>let str = new String('Hello World!')</li> <li>let myClassObject = new MyClass()</li> </ul> <button onclick = "checkType()"> Check Type </button> <div id = "root"> </div> <script> let str = new String('Hello World!') class MyClass {} let myClassObject = new MyClass() let root = document.getElementById('root') function checkType() { root.innerHTML = '<h4> The types of objects using instanceof operator: </h4>' root.innerHTML += '<ul> <li> str is an instance of String: ' + (str instanceof String) + ' </li> <li> str is an instance of MyClass: ' + (str instanceof MyClass) + ' </li> </ul>' root.innerHTML += ' <ul> <li> myClassObject is an instance of String: ' + (myClassObject instanceof String) + ' </li> <li> myClassObject is an instance of MyClass: ' + (myClassObject instanceof MyClass) + ' </li> </ul>' } </script> </body> </html>
当与某些对象一起使用时,`typeof` 和 `instanceof` 运算符可能并非总是返回预期结果。例如,`typeof` 运算符对于数组返回“object”,即使它们是 JavaScript 中的一种对象类型。要正确检查值是否为数组,可以使用 `Array.isArray()` 方法。