今天我們將補齊說明剩餘的常見的運算子(Operators)以及簡介何謂二進制、Bit、Truthy和Falsy value。
二進制是一種數字系統,其使用兩個數字(0 和 1),來表示數值,可理解成逢二即進位。
我們日常使用的數字系統,則屬於十進制,有著0到9的十個數字。
二進制 | 十進制 |
---|---|
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | 10 |
位元是「二進制數位的最小單位」,有兩個值(0 或 1)。
可以將位元想像成燈泡,其只有兩個狀態:不亮(0)或亮燈(1)。
以燈泡為例,該二進制數值為100 (也就是4)
了解二進制和位元後,現在就能來解釋位元運算子(Bitwise Operators)了
會將數字operand視為32bits的數字,並對每個bit進行運算。
以下舉例解釋a&b
let a = 10;
let b = 9
console.log (a & b) // 結果為8
要解釋最終結果為8,必須先將a和b轉二進制,a轉為(1010)而b則轉為(1001)
查看a&b定義,『對應位為1的位置,返回1,若否則返回0』
在第四位處兩個operand都是1,因此結果會變成(1000),最終轉為十進制後才會獲得8。
當兩側都是Boolean值時很好想像,但是如果是一側是數字呢?
console.log (1 && true) //結果也會是true
當使用邏輯運算子時,若有一側的值數值不是Boolean值時,因JavaScript的弱型別特性,運算時會執行『適當』的類型轉換(Type Coercion),將其轉為Boolean值。
針對數值轉後結果為True或是False,分成以下兩類:
Falsy value:當轉為Boolean值時,會變成false的值(共五項:0, 空字串(''), undefined, null, NaN)
Truthy value:當轉為Boolean值時,會變成true的值(除Falsy value的五項外都是Truthy value)
console.log(Boolean(0)) //結果為false
console.log(Boolean(undefined)) //結果為false
console.log(Boolean({})) //結果為true
const age = 27;
const firstName = 'Jeremy';
console.log(age + firstName); // 27Jeremy
而在上例中,27就被轉換成'27'(字串形式),變成兩個字串連結,最終獲得27Jeremy這個字串
為一種條件運算子,根據條件的True或False來選擇不同的值。
const age = 27;
const canVote = age >= 18 ? "可以投票" : "不可以投票";
console.log(canVote); // 結果:可以投票
在三元運算子中,會先查看條件(age >= 18),若條件為True則返回'可以投票'結果,若否則為'不可以投票'