ECMAScript有五种数据类型(基本数据类型):Undefined,Null, Boolean,Number和String.还有一种复杂数据类型–Object.
typeof 操作符
typeof用来检测给定变量的数据类型.
- ‘undefined’ –如果这个值未定义
- ‘boolen’ –如果这个值是布尔值
- ‘string’ –如果这个值是字符串
- ‘number’ –如果这个是数值
- ‘object’ –如果这个值是对象或null
- ‘function’ –如果这个值是函数
|
|
Undefined类型
Undefined的类型只有一个,即特殊的undefined.在使用var声明变量但未对其初始化时,这个变量就是undefined.
|
|
包含undefined值的变量与未定义的变量还是不一样的.如下:
|
|
Null类型
Null是第二个只有一个值的特殊类型.这个值是null. 从逻辑来看,是空指针.所以typeof
检测null
会返回'object'
类型.
|
|
尽管 null==undefined
总是返回 true
,但这个操作符处于比较的目的会转换其操作数.
尽管 null
和 undefined
有这样的关系,但他们的用途完全不同.
undefined
– 无论什么情况都不要显示设置一个变量的值.
null
– 在意是否真正的保存了对象,就应该明确让该变量保存 null
值.
Boolen类型
该类型只有两个字面值:true
和 false
.
这两个值与数字值不是一回事,因此true不一定等于1 , false也不一定等于0.
虽然Boolean的字面值只有两个,但JS中所有的类型都与Boolean等价的值.
数据类型 | true的值 | false的值 |
---|---|---|
string | 任何非空字符串 | “” |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
这些规则对控制流语句非常重要.
Number类型
数值范围: Number.MIN_VALUE
~ Number.MAX_VALUE
如果计算超出了这个范围,则自动转化为特殊的Infinity
值.
|
|
NaNNaN
,即非数值(Not a Number)是一个特殊的数值.表示本来要返回一个数值的操作未返回数值的情况.例如:在java中任何数值/0
原本会导致错误,但是在js中,会返回NaN
,并且不会影响其他代码执行.
NaN
有两个非同寻常的特点.
*任何涉及NaN
的操作都会返回NaN
,这回导致在多部计算中有可能导致问题.
*NaN
与任何值都不相等,包括NaN
本身.如 NaN == NaN //false
字符串类型
1.字符串字面量
2.字符串的特点:不可变
3.转化为字符串:toString()
和 String()
Object类型
|
|
Object都具有下列属性和方法
- Constructor:保存着用于创建当前对象的函数.
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(不是在实例的原型中)是否存在. propertyName作为参数以字符串指定
- isPropertyOf(object):用于检查传入的对象是否是另一个对象的原型
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用
for-in
语句来枚举.propertyName作为参数以字符串指定 - toLocaleString():返回对象本地化的字符串表示
- toString():返回对象的字符串表示
- valueof():返回对象的字符串|数值|布尔值表示.通常与toString()的返回值相同.