型別
- 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
複製程式碼