概述
JavaScript是弱类型语言,但不是没有数据类型,JavaScript规定了五种简单的数据类型
- (1)数值(Number):整数和小数(比如1和3.14)
- (2)字符串(String):字符组成的文本(比如'Hello World')
- (3)布尔值(Boolean):true(真)和false(假)两个特定值
- (4)Undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
- (5)Null:表示无值,即此处的值就是“无”的状态。
还有一种复杂的数据类型--Object,Object本质上是一组无序的名值对组合
对象又可以分成三个子类型。
- 狭义的对象(object)
- 数组(array)
- 函数(function)
typeof运算符
-
(1)原始类型
数值、字符串、布尔值分别返回number、string、boolean。
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
-
(2)undefined
undefined返回undefined。
typeof undefined
// "undefined"
利用这一点,typeof可以用来检查一个没有声明的变量,而不报错。
v
// ReferenceError: v is not defined
typeof v
// "undefined"
上面代码中,变量v没有用var命令声明,直接使用就会报错。但是,放在typeof后面,就不报错了,而是返回undefined。
实际编程中,这个特点通常用在判断语句。
// 错误的写法
if (v) {
// ...
}
// ReferenceError: v is not defined
// 正确的写法
if (typeof v === "undefined") {
// ...
}
(3)其他
除此以外,其他情况都返回object。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
从上面代码可以看到,空数组([])的类型也是object,这表示在JavaScript内部,数组本质上只是一种特殊的对象。
网友评论