一、JS里的七种数据类型
1. Number
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
1 1.1 .1 1.23e2 |
0b11 | 01234567 | 0x123ABC |
2. String
- 空字符
''
""
- 多行字符串
//推荐
var s1 = '12345'+
'6789'
var s2 = `12345
67890` //包含空格和回车
//不推荐,因为再"\"后面有空格的话会报错,不容易发现
var s3 = '12345 \
67890'
3. Boolean
- Boolean只有两个值:
true
和false
- 真值表
- a&&b
a\b | true | false |
---|---|---|
true | true | false |
false | false | false |
- a||b
a\b | true | false |
---|---|---|
true | true | true |
false | true | false |
4. Symbol
5. null
只有一个值,就是null
6. undefined
只有一个值,就是undefined
7. Object(哈希表)
-
定义object
var person = {
name: 'lilei', //与'name': 'lilei'一样
age: 18,
married: true,
childern: { name: 'xxx', age: 19...}
}
-
取值
-
person['name']
['name']的''一定要加,person[name]中的name是变量而不是字符串
//如果[]里的字符串符合标识符规则,可以用‘.’取值 -
person.name
在这里等价于person['name'],因为name符合标识符规则
-
-
删除对象中的key
delete person['name']
同时删除Key和Value
person.name
//undefined,无value
'name' in person
//false, 无key将value置位undefined
person['name'] = undefined
person.name
//undefined
'name' in person
//true , key还在
for...in遍历对象
for (var key in person) {
console.log(person[key]) //这里不能用person.key,因为person.key等价于person['key']
}
二、 null 与 undefined 的区别
如果一个变量(非对象)没有赋值,它就是undefined;
如果想要一个对象,但是不想赋值,就是null;
总结:null为空对象,undefined为空非对象(约定俗成的,非严格定义)
三、用typeof取七种类型
String | Number | Boolean | Object | Symbol | undefined | null | |
---|---|---|---|---|---|---|---|
typeof | string | number | boolean | object | symbol | undefined | object |
typeof 的两个bug:
typeof null
//objecttypeof function
//function