iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

轉職仔與JavaScript的初次相遇系列 第 5

JavaScript運算式和運算子簡介(下) - Day05

  • 分享至 

  • xImage
  •  

前言

今天我們將補齊說明剩餘的常見的運算子(Operators)以及簡介何謂二進制、Bit、Truthy和Falsy value。

說明

運算子(Operator):

  • 位元運算子 (Bitwise Operators):
    在講解Bitwise operators前,需要先介紹二進制(Decimal)以及Bit(位元)。

二進制 (Binary):

二進制是一種數字系統,其使用兩個數字(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

位元 (Bit):

位元是「二進制數位的最小單位」,有兩個值(0 或 1)。
可以將位元想像成燈泡,其只有兩個狀態:不亮(0)或亮燈(1)。
燈泡圖

以燈泡為例,該二進制數值為100 (也就是4)

了解二進制和位元後,現在就能來解釋位元運算子(Bitwise Operators)了

會將數字operand視為32bits的數字,並對每個bit進行運算。

  • a&b:在兩個operand的對應位為1的位置,返回1,若否則返回0。
  • a|b:在兩個operand的對應位為0的位置,返回1,若有一個為1就返回1。
  • a^b:在兩個operand的對應位相同的位置返回0,若有不同的返回1。

以下舉例解釋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。

  • 邏輯運算子 (Logical Operators):
    常見的邏輯運算子有三個:AND(&&)、OR(||)和NOT(!)
  1. AND(&&):當左右兩側的值同時為true時,會得到true結果。若其中一方式false,則會是false
  2. OR(||):只有左右一方為true,則結果就是true。只有在兩側皆是false時,才會得到false值
  3. NOT(!):用於反轉Boolean值,若原本是true則在反轉後會得到false

當兩側都是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
  • 字串運算子 (String Operators):
    還記得算術運算子(加號)可用來執行數字互加計算,然而如果是數字加上字串呢?
const age = 27;
const firstName = 'Jeremy';
console.log(age + firstName); // 27Jeremy

而在上例中,27就被轉換成'27'(字串形式),變成兩個字串連結,最終獲得27Jeremy這個字串

  • 特殊運算子 (Special Operators):

三元運算子:

為一種條件運算子,根據條件的True或False來選擇不同的值。

const age = 27;
const canVote = age >= 18 ? "可以投票" : "不可以投票";
console.log(canVote); // 結果:可以投票

在三元運算子中,會先查看條件(age >= 18),若條件為True則返回'可以投票'結果,若否則為'不可以投票'


上一篇
JavaScript運算式和運算子簡介(上) - Day04
下一篇
JavaScript流程判斷與迴圈 - Day06
系列文
轉職仔與JavaScript的初次相遇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言