數(shù)據(jù)類型
JavaScript 語言的每一個值,都屬于某一種數(shù)據(jù)類型。JavaScript 的數(shù)據(jù)類型,共有六種。(ES6 又新增了第七種 Symbol 類型的值)
- 數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
字符串(string):字符組成的文本(比如"Hello World") - 布爾值(boolean):true(真)和false(假)兩個特定值
- undefined:表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值
- null:表示無值,即此處的值就是“無”的狀態(tài)。
- 對象(object):各種值組成的集合
- Symbol ( 在 ECMAScript 6 中新添加的類型).。一種數(shù)據(jù)類型,它的實例是唯一且不可改變的。
typeof運算符
typeof運算符可以返回一個值的數(shù)據(jù)類型。
1、原始類型
數(shù)值、字符串、布爾值分別返回number、string、boolean。
typeof 134 //"number"
typeof '你好'//"string"
typeof false//"boolean"
2、函數(shù)
函數(shù)返回function。
function a() {}
typeof a //"function"
3、undefined
undefined返回undefined
typeof undefined //"undefined"
利用這一點,typeof可以用來檢查一個沒有聲明的變量,而不報錯。
4、其他
typeof window //"object"
typeof [] //"object"
typeof {} //"object"
typeof null //"object"
5、布爾值
布爾值代表“真”和“假”兩個狀態(tài)。“真”用關(guān)鍵字true表示,“假”用關(guān)鍵字false表示。布爾值只有這兩個值。
下列運算符會返回布爾值:
兩元邏輯運算符:&&
(And),||
(Or)
前置邏輯運算符: !
(Not)
相等運算符:===
,!==
,==
,!=
比較運算符:>
,>=
,<
,<=
如果JavaScript預(yù)期某個位置應(yīng)該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false,其他值都視為true。
undefined
null
false
0
NaN
-
""
或''
(空字符串)
布爾值往往用于程序流程的控制 如:
if ('') {
console.log(true);// 沒有輸出
}
上面代碼的if命令后面的判斷條件,預(yù)期應(yīng)該是一個布爾值,所以JavaScript自動將空字符串轉(zhuǎn)為布爾值false,導(dǎo)致程序不會進入代碼塊,所以沒有任何輸出。
空數(shù)組([]
)和空對象({}
)對應(yīng)的布爾值,都是true
if ([]) {
console.log(true); //true
}
if ({}) {
console.log(true);//true
}
運算符
1、算數(shù)運算符
- 加法運算符(Addition):x + y
- 減法運算符(Subtraction): x - y
- 乘法運算符(Multiplication): x * y
- 除法運算符(Division):x / y
- 余數(shù)運算符(Remainder):x % y
- 自增運算符(Increment):++x 或者 x++
- 自減運算符(Decrement):--x 或者 x--
- 求負運算符(Negate):-x
- 數(shù)值運算符(Convert to number): +x
2、賦值運算符
- x += y // 等同于 x = x + y
- x -= y // 等同于 x = x - y
- x *= y // 等同于 x = x * y
- x /= y // 等同于 x = x / y
- x %= y // 等同于 x = x % y
- x >>= y // 等同于 x = x >> y
- x <<= y // 等同于 x = x << y
- x >>>= y // 等同于 x = x >>> y
- x &= y // 等同于 x = x & y
- x |= y // 等同于 x = x | y
- x ^= y // 等同于 x = x ^ y
3、比較運算符
比較運算符比較兩個值,然后返回一個布爾值,表示是否滿足比較條件。
- == 相等
- === 嚴格相等
- != 不相等
- !== 嚴格不相等
- < 小于
- <= 小于或等于
- > 大于
- >= 大于或等于
4、布爾運算符
- ! 取反運算符
- && 且運算符
- || 或運算符
- condition? true case : false case 三元條件運算符
5、位運算符
- 或運算(or):符號為|,表示兩個二進制位中有一個為1,則結(jié)果為1,否則為0。
- 與運算(and):符號為&,表示兩個二進制位都為1,則結(jié)果為1,否則為0。
- 否運算(not):符號為~,表示將一個二進制位變成相反值。
- 異或運算(xor):符號為?,表示兩個二進制位中有且僅有一個為1時,結(jié)果為1,否則為0。
- 左移運算(left shift):符號為<<
- 右移運算(right shift):符號為>>
- 帶符號位的右移運算 (zero filled right shift):符號為>>>
6、匯總表
優(yōu)先級 | 運算類型 | 關(guān)聯(lián)性 | 運算符 |
---|---|---|---|
20 | 圓括號 | n/a | ( … ) |
19 | 成員訪問 | 從左到右 | … . … |
19 | 需計算的成員訪問 | 從左到右 | … [ … ] |
19 | new (帶參數(shù)列表) | n/a | new … ( … ) |
19 | 函數(shù)調(diào)用 | 從左到右 | … ( … ) |
18 | new (無參數(shù)列表) | 從右到左 | new … |
17 | 后置遞增(運算符在后) | n/a | … ++ |
17 | 后置遞減(運算符在后) | n/a | … -- |
16 | 邏輯非 | 從右到左 | ! … |
16 | 按位非 | 從右到左 | ~ … |
16 | 一元加法 | 從右到左 | + … |
16 | 一元減法 | 從右到左 | - … |
16 | 前置遞增 | 從右到左 | ++ … |
16 | 前置遞減 | 從右到左 | -- … |
16 | typeof | 從右到左 | typeof … |
16 | void | 從右到左 | void … |
16 | delete | 從右到左 | delete … |
15 | 冪 | 從右到左 | … ** … |
14 | 乘法 | 從左到右 | … * … |
14 | 除法 | 從左到右 | … / … |
14 | 取模 | 從左到右 | … % … |
13 | 加法 | 從左到右 | … + … |
13 | 減法 | 從左到右 | … - … |
12 | 按位左移 | 從左到右 | … << … |
12 | 按位右移 | 從左到右 | … >> … |
12 | 無符號右移 | 從左到右 | … >>> … |
11 | 小于 | 從左到右 | … < … |
11 | 小于等于 | 從左到右 | … <= … |
11 | 大于 | 從左到右 | … > … |
11 | 大于等于 | 從左到右 | … >= … |
11 | in | 從左到右 | … in … |
11 | instanceof | 從左到右 | … instanceof … |
10 | 等號 | 從左到右 | … == … |
10 | 非等號 | 從左到右 | … != … |
10 | 全等號 | 從左到右 | … === … |
10 | 非全等號 | 從左到右 | … !== … |
9 | 按位與 | 從左到右 | … & … |
8 | 按位異或 | 從左到右 | … ^ … |
7 | 按位或 | 從左到右 | … | … |
6 | 邏輯與 | 從左到右 | … && … |
5 | 邏輯或 | 從左到右 | … || … |
4 | 條件運算符 | 從右到左 | … ? … : … |
3 | 賦值 | 從右到左 | … = … |
3 | 從右到左 | … += … | |
3 | 從右到左 | … -= … | |
3 | 從右到左 | … *= … | |
3 | 從右到左 | … /= … | |
3 | 從右到左 | … %= … | |
3 | 從右到左 | … <<= … | |
3 | 從右到左 | … >>= … | |
3 | 從右到左 | … >>>= … | |
3 | 從右到左 | … &= … | |
3 | 從右到左 | … ^= … | |
3 | 從右到左 | … |= … | |
2 | yield | 從右到左 | yield … |
yield* | 從右到左 | yield* … | |
1 | 展開運算符 | n/a | ... … |
0 | 逗號 | 從左到右 | … , … |
ps:Undefined、Null、 +0、 ?0、 NaN、空字符串為 false