JavaScript中的七种数据类型
- String 字符串
- Number 数字
- Bool 布尔
- Symbol 字符
- Undefined 空
- Null 空
- Object 对象,(数组,函数,日期)不是数据类型,都属于Object
- 四基两空一对象
Number 64位浮点数
- 整数写法 1
- 小数写法 0.1
- 科学计数法 1.23e
- 八进制 01213
- 十六进制 0x3F
- 二进制 0b11
特殊值
- 正0和负0都等于0,但并不一样,如:
//chrom控制台的输出,
1/0
Infinity
1/+0
Infinity
1/-0
-Infinity
- Infinity,+Infinity,-Infinity
- 无法表示的数字,NaN(Not a Number),但仍属于数字
0/0
Nab
//NaN === NaN结果为false
String 每个字符两个字节(阉割版UTF8)
写法
- 单引号'你好'
- 双引号 "你好"
- 反引号 ``
单引号里包含单引号写法
- 转义 'it's ok!'
- 交替使用引号 'it"s ok!'
- 反引号
转义,用另一种写法表示你想要的东西
- '表示'
- "表示"
- \n表示换行
- \r表示回车
- \t表示tab制表符
- \\表示\
- \u4f60表示对应的Unicode字符 //你
- \x49表示前265个unicode字符 //1
- 要打印回车使用反引号即可
字符串的属性
- string.length 字符串的长度
'\n\t\r'.length 为3
'\\\\\\'.length 为3
''.length 为0
' '.length 为1
通过下标读取字符串
let str = 'abc'
//下标从0开始
str[0] === 'a'
str[2] === 'c'
str[3] === undefined
base64转码
- 正常字符串转为Base64编码的字符串
window.btoa('abc')
//"YWJj"
- Base编码转为正常字符的字符串
window.btoa('YWJj')
//"abc"
布尔boolean 真或假
运算能得到boolean值
- 否定运算 !a
- 相等运算 1==2、1!=2、1===2、1!==2
- 比较运算 1>2、1>=2、1<2、1<=2
五个falsy值 falsy就是相当于false但又不是false的值,分别就是
- undefined
- null
- 0
- NaN
- ''
- JavaScript中其它所有都为真值
undefined和null 两种空类型
区别
- 细节一:如果一个变量生命了,但没有赋值,默认值就是undefined,不是null
- 细节二:如果一个函数,没有写return,那么默认return undefined,而不是null
- 前端程序员的习惯,把非对象的空值,比如数字,字符串,布尔写成undefined,把对象的空置写成null
变量声明
- var a = 1 过时的不好用的
- let a = 1 es6推出的变量声明,更合理
- const a = 1 es6推出的常量声明,声明时必须赋值,且无法再改变
let声明
- 遵循块作用域,即使用范围不能超过{}
- 不能重复声明
- 声明时可赋值,也可不赋值
- 必须先声明再使用,否则报错
console.log(a)
let a = 1
//报错
- 全局声明let,不会变为window的属性,var会
- for循环配合let有奇效
const声明
- 与let几乎一致
- 声明时就要赋值,且不可再改变值
变量声明时即指定了值,也指定了类型
类型转换
- number => string
let a = 1
String(1) //'a'
a + '' //'a'
- string => number
let a = '1'
Number(a) //1
a + 0 //1
+a //1
parseInt(a) //1
- x => bool
let a = 'i'
Boolean(a) //true
!!a //true
- x => string
String(true)
true.toString()