类型
- 6种原始类型
- Boolean
- String
- Null
- undefined
- Number
- Symbol(ES6新定义)
- 引用类型
- Object
- Function
方法
typeof
typeof true // boolean
typeof 'string' // string
typeof null // object
typeof undefined // undefined
typeof 123 // number
typeof {key: 'value'} // object
typeof function(){return 'i\'m a function} // function
instanceof
let obj = {}
let arr = []
obj instanceof Object // true
arr instanceof Object // true
arr instanceof Array // true
复制代码
类型转换
转Boolean
let str = 'string'
!str // false
!!str // true
!!0 // false
!!{} // true
复制代码
对象转基本类型
let obj = {name: 'Damon'}
JSON.stringify(obj) // '{"name":"Damon"}'
obj.toString() // '[object Object]'
obj.toLocaleString() // '[object Object]'
复制代码
字符串转数组
let str = 'ILoveAmber'
str.split('') // return [ 'I', 'L', 'o', 'v', 'e', 'A', 'm', 'b', 'e', 'r' ]
str // 'ILoveAmber'
复制代码
字符串转数字
let str1 = '123LoveAmber'
parseInt(str1) // 123
str1 '123LoveAmber'
let str2 = 'LoveAmber123'
parseInt(str2) // NaN
let str3 = '123'
parseInt(str3) // 123
str3 // '123'
str3 * 1 // 123
str3 // '123'
复制代码
数字转字符串
let num = 123
num.toString() // '123'
num.toString(2) // '1111011' 转换为二进制字符串
num // 123
num + '' // '123'
num + 'LoveAmber' // '123LoveAmber'
复制代码
四则运算符
算数运算符
1 + 1 // 2
1 - 1 // 0
1 * 1 // 1
3 / 2 // 1.5
3 % 2 // 1
let a = 1
++a // return 2 & a = 2
a = 1
a++ // return 1 & a = 2
let b = 2
--b // return 1 & b = 1
b = 2
b-- // return 2 & b = 1
复制代码
赋值运算符
let a = 1 // a = 1
a += 1 // return 2 & a = 2
a -= 1 // return 1 & a = 1
a *= 3 // return 3 & a = 3
a /= 3 // return 1 & a = 1
a %= 5 // return 1 & a = 1
复制代码
位运算
ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。在 ECMAScript 中,所有整数字面量默认都是有符号整数。
有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。数值范围从 -2147483648 到 2147483647
NOT 运算
let num = 28
let num2 = ~num // -29
num.toString(2) // '11100'
num2.toString(2) // '-11101'
复制代码
AND
let a = 123
let b = 2
a.toString(2) // '1111011'
b.toString(2) // '10'
let c = a & b // 2
c.toString(2) // '10'
复制代码
OR
let a = 123
let b = 2
let c = a | b // 123
c.toString(2) // '1111011'
复制代码
XOR
let a = 123
let b = 2
let c = a ^ b // 121
c.toString(2) // '1111001'
复制代码
左移运算
let a = 3
a.toString(2) // 11
let c = a << 5 // 96
c.toString(2) // '1100000'
复制代码
有符号右移运算(无符号右移为 >>> )
let a = 3
let c = a >> 5 // 0
c = a >> 1 // 1
复制代码
== , === 操作符
let a = 123
a === 123 // true
a == '123' // true
a === '123' // false
let b = 'abc'
b === 'abc' // true
let obj1 = {name: 'Damon'}
let obj2 = {name: 'Damon'}
obj1 === obj2 // false
obj1 == obj2 // false
let arr1 = [1,2,3]
let arr2 = [1,2,3]
arr1 === arr2 // false
arr1 == arr2 // false
let obj1 = {name: 'Amber'}
let obj2 = obj1
obj1 == obj2 // true
obj1 === obj2 // true
复制代码
比较运算符
123 > 1 // true
'123' > '1' // true
'abc' > 'a' // true
'abc' > 'ad' // false
复制代码