JavaScript typeof 的数据类型以及运算符

JavaScript typeof 的数据类型以及运算符
JavaScript typeof 的数据类型以及运算符
 
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:62}  // 返回 "object"
typeof new Date()             // 返回 "object"
typeof function () {}         // 返回 "function"
typeof myCar                  // 返回 "undefined" *
typeof null                   // 返回 "object"
 
请注意:
 
NaN 的数据类型是数值
数组的数据类型是对象
日期的数据类型是对象
null 的数据类型是对象
未定义变量的数据类型是 undefined
尚未赋值的变量的数据类型也是 undefined
您无法使用 typeof 去判断 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:62}.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;
}

推荐阅读