JavaScript typeof
在 JavaScript 中有 5 种不同的可以包含值的数据类型:
string
number
boolean
object
function
有 6 种类型的对象:
Object
Date
Array
String
Number
Boolean
以及 2 种不能包含值的数据类型:
null
undefined
typeof 运算符
您可以使用 typeof 运算符来确定 JavaScript 变量的数据类型。
实例
typeof "Bill" // 返回 "string"
typeof 3.14 // 返回 "number"
typeof NaN // 返回 "number"
typeof false // 返回 "boolean"
typeof [1,2,3,4] // 返回 "object"
typeof {name:'Bill', age:19} // 返回 "object"
typeof new Date() // 返回 "object"
typeof function () {} // 返回 "function"
typeof myCar // 返回 "undefined" *
typeof null // 返回 "object"
亲自试一试
请注意:
NaN 的数据类型是数字
数组的数据类型是对象
日期的数据类型是对象
null 的数据类型是 object
未定义变量的数据类型为 undefined *
未赋值的变量的数据类型也是 undefined *
您无法使用 typeof 来确定 JavaScript 对象是否是数组(或日期)。
原始日期
原始数据值指的是没有附加属性和方法的单个简单数据值。
typeof 运算符可以返回以下原始类型之一:
string
number
boolean
undefined
实例
typeof "Bill" // 返回 "string"
typeof 3.14 // 返回 "number"
typeof true // 返回 "boolean"
typeof false // 返回 "boolean"
typeof x // 返回 "undefined" (if x has no value)
亲自试一试
复杂数据
typeof 运算符可以返回两种复杂类型之一:
function
object
typeof 运算符会为对象、数组和 null 返回 "object"。
typeof 运算符不会为函数返回 "object"。
实例
typeof {name:'Bill', age:19} // 返回 "object"
typeof [1,2,3,4] // 返回 "object"(非 "array",请注意下面的例子)
typeof null // 返回 "object"
typeof function myFunc(){} // 返回 "function"
亲自试一试
typeof 运算符会为数组返回 "object",因为在 JavaScript 中数组是对象。
typeof 的数据类型
typeof 运算符并不是变量。它只是一个运算符。运算符 (+ - * /) 没有任何数据类型。
但是,typeof 运算符总是返回字符串(包含操作数的类型)。
constructor 属性
constructor 属性返回所有 JavaScript 变量的构造函数。
实例
"Bill".constructor // 返回 function String() {[native code]}
(3.14).constructor // 返回 function Number() {[native code]}
false.constructor // 返回 function Boolean() {[native code]}
[1,2,3,4].constructor // 返回 function Array() {[native code]}
{name:'Bill',age:19}.constructor // 返回 function Object() {[native code]}
new Date().constructor // 返回 function Date() {[native code]}
function () {}.constructor // 返回 function Function(){[native code]}
亲自试一试
您可以检查 constructor 属性以确定对象是否为数组(包含 "Array" 一词):
实例
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
亲自试一试
或者更简单,您可以检查对象是否为数组函数:
实例
function isArray(myArray) {
return myArray.constructor === Array;
}
亲自试一试
您可以检查 constructor 属性以确定对象是否为日期(包含 "Date" 一词):
实例
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
亲自试一试
或者更简单,您可以检查对象是否为日期函数:
实例
function isDate(myDate) {
return myDate.constructor === Date;
}
亲自试一试
Undefined
在 JavaScript 中,没有值的变量的值是 undefined。类型也是 undefined。
实例
let car; // 值是 undefined,类型也是 undefined。
亲自试一试
通过将其值设置为 undefined,可以清空任何变量。类型也将是 undefined。
实例
car = undefined; // 值是 undefined,类型也是 undefined。
亲自试一试
空值
空值与 undefined 无关。
空字符串既有合法值又有类型。
实例
let car = ""; // 值是 "",类型是 "string"
亲自试一试
Null
在 JavaScript 中 null 即是“无”。它应该是不存在的东西。
不幸的是,在 JavaScript 中,null 的数据类型是一个对象。
你可以认为它是 JavaScript 中的一个 bug,typeof null 是一个对象。类型应为 null。
您可以通过将对象设置为 null 来清空对象:
实例
let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = null; // 现在值为 null,但类型仍然是对象
亲自试一试
您还可以通过将对象设置为 undefined 来清空对象:
实例
let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = undefined; // 现在值和类型都是未定义
亲自试一试
undefined 与 null 的区别
undefined 和 null 值相等但类型不同:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
亲自试一试
JS Break
JS 类型转换
JavaScript 和 HTML DOM 参考手册
JavaScript 实例
JavaScript 测验
JavaScript 高级教程
W3School 简体中文版提供的内容仅用于培训和测试,不保证内容的正确性。通过 |