js的7种数据类型
- 基本类型: number / string / boolean / symbol (es6添加的)
- 特殊类型:undefined / null
- 复合类型 object (包含 Array function 等)
number
- 整数和小数:1 1.1 .1
- 科学记数法:1.23e2
- 十进制不戴帽子(首位什么也不加)
- 二进制带个帽子上面写着0B/0b 。
- 八进制戴的帽子上面写着0。
- 十六进制的帽子上面写着0X/0x。
0b11 //3
0xff //255
0.0000001 // 1e-7
2.2 + 2.1 //4.300000000000001
3 / 0 // Infinity
undefined + 1 //NaN
NaN !== NaN // true
- 备注:数值的储存方式是64位浮点数来储存的,所以js的计算并不精确
- Infinity叫做无穷,数学符号是∞.有正负之分
- 当一个不存在的值进行运算时,就会得到NaN的结果。NaN不属于数字,自己也不等于自己,判断一个值是否NaN 用isNaN()
string
- 空字符串:’’
- 多行字符串:
var s = '12345' +
'67890' // 无回车符号
或
var s = `12345
67890` // 含回车符号
- 一些转义标识符
/' 表示单引号
/" 表示双引号
/n 表示换行
/r 表示回车
// 表示/
- Base64转码–两个语句
// btoa():任意值转化成Base64
// atob() : Base64转化成原值
// 当非ASCⅡ要转入时,要加一层转码如下:
function b64Encode(str) {
return btoa(encodeURIComponent(str));
}
function b64Decode(str) {
return decodeURIComponent(atob(str));
}
b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"
boolean
- 只有两个值:true 和 false
- a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
- a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true
undefined 和 null
- 两个都是表示没有值
- 当一个变量没有赋值,那么返回undefined
- 如果想有一个对象,但还没有赋值,推荐使用null
- 如果有一个非对象,且不想给他赋值,使用undefined(直接不赋值即可)
object
- object 就是上面几种基本类型(无序地)组合在一起
- object 里面可以有 object
var person = {
name: 'Frank',
'child': {
name: 'Jack',
'':'hahha' //合法的
}, // 最后这个逗号可有可无
}
- object 的 key 一律是字符串,不存在其他类型的 key。
– object[‘key’] 可以写作 object.key
在符合标识符的情况下 person.name 等价于 person['name']
- object[’’] 是合法的
- 注意 object.key 与 object[key] 不同
var apple = "like";
person[apple] 其实是 person['like']
- delete object[‘key’]
delete person['name']
- ‘key’ in object
symbol
Symbol 生成一个全局唯一的值。
typeof
xxx 的类型 | string | number | boolean | symbol | undefined | null | object | function |
---|---|---|---|---|---|---|---|---|
typeof xxx | ‘string’ | ‘number’ | ‘boolean’ | ‘symbol’ | ‘undefined’ | ‘object’ | ‘object’ | ‘function’ |
注意 function 并不是一个类型
这里参照了阮一峰的JS教程 https://wangdoc.com/javascript/