一、数据类型
字符编码
- GB2312:2个字节,16位
- GBK:2个字节,16位
- Unicode:3个及以上的字节
- UTF-8:英文1个字节存储,中文3个字节存储,变长存储法,“8”表示最低存储位数是8位
数字 number
写法
- 整数写法:1
- 小数写法:0.1
- 科学计数法:1.23e4=1.23*10^4
- 八进制写法:0123或00123或0o123
- 十六进制写法:0x3F或0X3F
- 二进制写法:0b11或0B11
特殊值
- +0=-0=0
- 1/0=1/+0=Infinity,1/-0=-Infinity
- NaN(Not a Number):无法表示的一个数字,比如0/0=NaN
字符串 string
写法
- 单引号:'中国'
- 双引号:"中国"
- 反引号:`中国`,TAB键上面,多行字符串使用反引号
引号的转义
当单引号中有单引号时,比如'it's me',使用转义
- 'it's me' 在'前加上一个反斜杠 或者使用以下两种写法
- ''it's me''
- `it's me`
其他转义
- ' is '
- '' is ''
- \n is 换行
- \r is 回车
- \t is tab制表符
- \\ is \
- \uFFFF is 对应的Unicode字符
- \xFF is 前256个Unicode字符
字符串的属性
字符串的长度
获取一个字符串的长度的方法:字符串.length
'\\\\\\'.length 的值是3,因为\\表示一个反斜杠
' '.length 的值是1,1个空格是1个字符
通过下标读取字符
s = 'china'
s[0] = 'c'
base64转码
window.atob('base64字符串')
base64编码的字符串转为正常字符串
布尔 boolean
取值
true/false,都是小写
哪些数据是真值,哪些是假值?
除了以下五个falsy值和false,其他值都是真值
- undefined
- null
- 0
- NaN
- '' 空字符串
undefined和null的区别
- 如果一个变量被声明但是没有赋值,它的默认值为undefined,不是null
- 如果一个函数没有return,那么它的默认值为undefined,不是null
- 习惯上,将非对象的空值写为undefined,对象的空值写为null
对象 object
二、变量声明
三种变量声明的形式
- var a = 1 (ES3)
- let a = 1 (ES6)
- const a = 1 (ES6)
区别
- var是过时写法,不好用
- let是新的更合理的写法
- const声明时必须赋值,且不能再修改
- a = 1 不是变量声明写法,是赋值
let声明
规则
- 只在一个代码块内有效,不超过{}
- 同一个作用域中,不能对一个变量进行二次声明
- 可以只声明,不赋值
- 变量需要被先声明再使用
- 全局声明的let变量,不会成为window的属性
- for循环配合let有奇效
const声明
规则
- 规则几乎和let一样
- 除了:声明时必须赋值,赋值后不能更改
name 和 'name' 的区别
- name 是变量,值可变
- 'name' 是常量,值不可变
三、类型转换
number =》 string 数字转字符串
- 使用函数String,即String.(123),得'123'
- 把数字加上一个空字符串,即123 + '',得'123'
string =》 number 字符串转数字
- 使用函数Number,即Number('123'),得123
- 把字符串减去一个0,即'123'-0,得123
- 字符串前面加上一个+
x =》 booblean 任何东西转布尔
- !!x,取非x的非,即取x的原始布尔值
- Boolean(x)
x =》 string 任何东西转字符串
- String(x)
- x.toString()