一、概述
根据Es6新增了Symbol 类型的值,所以JavaScript 的数据类型,共有七种。分别是:
string number Boolean symbol undefined null object
- string 文本(比如Hello World)。
- number 整数和小数(比如1和3.14)。
- Boolean 表示真伪的两个特殊值,即true(真)和false(假)。
- undefined 表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
- null 表示空值,即此处的值为空。
- object 各种值组成的集合。
二、对象
单独把对象拿出来是因为对象很复杂,对象是最复杂的数据类型,又可以分成三个子类型。
- 狭义的对象(object)。
- 数组(array)
- 函数(function)
下面有几个对象需要注意的细节:
eg1:
var person={
name:'frank',
age:'18'
}
name和age是key值,frank和18分别是key值对应的value值。想要取到某一个value值,有如下几种取法:
- person['name']
- person[name]
-
person.name
1、
先不说这几种取法是否是正确的,大家先看几道题:
2、
3、
这几道题的答案分别是:
'frank' ,'frank' ,undefined.
好,上面最正宗的写法,最正确的写法应该是:
person['name']。
而person.name使用的时候,往往这个name是个字符串,是一个要符合key的规则的字符串,局限性比较高。
而第二种person[name]和person.name类似,但是当遇到上述第三道题的情况时,就会出现问题。
eg2:
var person={
name:'frank',
"":'18'
}
大家觉得,如果这么写,可以把18取出来吗?
person[""] = ?
答案是,可以的。
eg3:下面这几种写法,谁对谁错?
var person={ 9a :'frank'}
var person1={ '9a' :'frank'}
var person2= { 'a b':'frank'}-----ab之间是空格
答案:第一种写法是错误的。
三、typeOf运算符
JavaScript 有三种方法,可以确定一个值到底是什么类型。
- typeof运算符
- instanceof运算符
- Object.prototype.toString方法
这里所说的是typeOf方法:
typeOf:string --->string
typeOf:number --->number
typeOf:boolean --->boolean
typeOf:symbol --->symbol
typeOf:undefined --->undefined
typeOf:null --->object
typeOf:object --->object
typeOf:function --->function
typeOf:array --->object
四、布尔值
布尔值需要注意的点是:
转换规则是除了下面六个值被转为false,其他值都视为true。
- undefined
- null
- false
- 0
+NaN - ""或''(空字符串)
注意,空数组([])和空对象({})对应的布尔值,都是true。
if ([]) {
console.log('true');
}
// true
if ({}) {
console.log('true');
}
// true