JavaScript typeof
typeof 是 JavaScript 的一个运算符,返回一个表示操作数的数据类型的字符串。
typeof
是 JavaScript 的一个运算符,返回一个表示操作数的数据类型的字符串。
在 JavaScript 中有 5 种不同的数据类型:
string
number
boolean
object
function
null
undefined
有 6 种类型的对象:
Object
Date
Array
String
Number
Boolean
typeof 语法
我们可以使用 typeof
运算符来查找 JavaScript 变量的数据类型。
typeof 运算符后接操作数:
typeof x;
或;
typeof x;
说明:
- x 是
typeof
的操作数,可以是一个变量或者一个具体的值。 typeof
的返回值是字符串,可能的返回值有:- “undefined”
- “object”
- “boolean”
- “number”
- “bigint” (ECMAScript 2020 新增)
- “string”
- “symbol” (ECMAScript 2015 新增)
- “function”
- “object”
typeof 示例:
typeof "John"; // 返回 "string"
typeof 3.14; // 返回 "number"
typeof NaN; // 返回 "number"
typeof false; // 返回 "boolean"
typeof [1, 2, 3, 4]; // 返回 "object"
typeof { name: "John", age: 34 }; // 返回 "object"
typeof new Date(); // 返回 "object"
typeof function () {}; // 返回 "function"
typeof myCar; // 返回 "undefined" *
typeof null; // 返回 "object"
请注意:
NaN
的数据类型是数字- 数组的数据类型是对象
- 日期的数据类型是对象
null
的数据类型是object
- 未定义变量的数据类型为
undefined
- 未赋值的变量的数据类型也是
undefined
typeof
不能确定 JavaScript 对象是否为数组(或日期)。
构造函数属性
constructor
属性返回所有 JavaScript 变量的构造函数。
"John".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:'John',age:34}.constructor // 返回 function Object() {[native code]}
new Date().constructor // 返回 function Date() {[native code]}
function () {}.constructor // 返回 function Function(){[native code]}
通过搜索构造函数字符串是否含有 Array
判断是否数组对象:
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
或者更简单,您可以直接判断构造函数对象是否为 Array
:
function isArray(myArray) {
return myArray.constructor === Array;
}
通过搜索构造函数字符串是否含有 Date
判断是否数组对象:
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
或者更简单,您可以直接判断构造函数对象是否为 Date
:
function isDate(myDate) {
return myDate.constructor === Date;
}
undefined
在 JavaScript 中,没有值的变量的值为 undefined
,类型也是 undefined
。
let car; // 值是 undefined, 类型也是 undefined
将值设置为 undefined
,可以清空任何变量,类型也会变为 undefined
.
car = undefined; // 值变成了 undefined, 类型也是 undefined
空字符串
空字符串与 undefined
无关。
空字符串的类型是 string
:
let car = "";
typeof car; // 返回 "string"
null
在 JavaScript 中 null
是“无”,它代表是不存在的东西。
在 JavaScript 中, null
的数据类型是 object
。
您可以通过将对象设置 null
为来清空对象:
let person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" };
person = null; // 现在值为 null, 但是类型仍然是 "object"
您还可以通过将对象设置为 来清空对象 undefined
:
let person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" };
person = undefined; // 现在值和类型都是 "undefined"
undefined 和 null 的区别
undefined
和 null
值相等但类型不同:
typeof undefined; // 返回 "undefined"
typeof null; // 返回 "object"
null === undefined; // 返回 "false"
null == undefined; // 返回 "true"
- undefined 的数据类型是
undefined
, null 的数据类型是object
null == undefined
返回true
,说明他们的值是相等的null === undefined
返回false
,说明他们的数据类型不同