在 JavaScript 中,有 5 种不同的数据类型可以包含值:
string
number
boolean
object
function
有 6 种类型的对象:
Object
Date
Array
String
Number
Boolean
还有 2 种不能包含值的数据类型:
null
undefined
您可以使用typeof
运算符来查找 JavaScript 变量的数据类型。
typeof "John" // Returns "string"
typeof 3.14 // Returns "number"
typeof NaN // Returns "number"
typeof false // Returns "boolean"
typeof [1,2,3,4] // Returns "object"
typeof {name:'John', age:34} // Returns "object"
typeof new Date() // Returns "object"
typeof function () {} // Returns "function"
typeof myCar // Returns "undefined" *
typeof null // Returns "object"
亲自试一试 »
请注意:
你不能使用typeof
确定 JavaScript 对象是否是数组(或日期)。
原始数据值是没有附加属性和方法的单个简单数据值。
这个typeof
运算符可以返回以下原始类型之一:
string
number
boolean
undefined
typeof "John" // Returns "string"
typeof 3.14 // Returns "number"
typeof true // Returns "boolean"
typeof false // Returns "boolean"
typeof x // Returns "undefined" (if x has no value)
亲自试一试 »
这个typeof
运算符可以返回两种复杂类型之一:
function
object
这个typeof
对于对象、数组和 null,运算符返回 "object"。
这个typeof
对于函数,运算符不会返回 "object"。
typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4] // Returns "object" (not "array", see note below)
typeof null // Returns "object"
typeof function myFunc(){} // Returns "function"
亲自试一试 »
这个typeof
运算符返回“object
" 对于数组,因为在 JavaScript 中数组是对象。
这个typeof
运算符不是变量。它是一个运算符。运算符 ( + - * / ) 没有任何数据类型。
但是,typeof
运算符总是返回一个字符串(包含操作数的类型)。
这个constructor
property 返回所有 JavaScript 变量的构造函数。
"John".constructor // Returns function String() {[native code]}
(3.14).constructor // Returns function Number() {[native code]}
false.constructor // Returns function Boolean() {[native code]}
[1,2,3,4].constructor // Returns function Array() {[native code]}
{name:'John',age:34}.constructor // Returns function Object() {[native code]}
new Date().constructor // Returns function Date() {[native code]}
function () {}.constructor // Returns function Function(){[native code]}
亲自试一试 »
您可以检查构造函数属性来确定对象是否是Array
(包含单词"Array"):
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
或者更简单,您可以检查该对象是否是数组函数:
您可以检查构造函数属性来确定对象是否是Date
(包含单词"Date"):
或者更简单,您可以检查该对象是否是日期功能:
在 JavaScript 中,没有值的变量有值undefined
。类型也是undefined
。
通过将值设置为,可以清空任何变量undefined
。类型也将是undefined
。
空值与以下内容无关undefined
。
空字符串同时具有合法值和类型。
在 JavaScript 中null
是"nothing"。它应该是不存在的东西。
不幸的是,在 JavaScript 中,数据类型null
是一个对象。
您可以将其视为 JavaScript 中的一个错误typeof null
是一个对象。它应该是null
。
您可以通过将对象设置为来清空它null
:
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; // Now value is null, but type is still an object
亲自试一试 »
您还可以通过将其设置为清空对象undefined
:
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; // Now both value and type is undefined
亲自试一试 »
undefined
和null
值相同但类型不同:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
亲自试一试 »
这个instanceof
运算符返回true
如果一个对象是指定对象的实例:
const cars = ["Saab", "Volvo", "BMW"];
(cars instanceof Array);
(cars instanceof Object);
(cars instanceof String);
(cars instanceof Number);
亲自试一试 »
这个空白运算符计算表达式并返回不明确的。此运算符通常用于获取未定义的原始值,使用"void(0)"(在不使用返回值计算表达式时很有用)。
<a href="javascript:void(0);">
Useless link
</a>
<a href="javascript:void(document.body.style.backgroundColor='red');">
Click me to change the background color of body to red
</a>
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!