iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

30天前端網頁基礎觀念(HTML,CSS,Javascript,blender)系列 第 25

Day25 JavaScript比較與運算符號

  • 分享至 

  • xImage
  •  

今天想要來談談有關JavaScript的比較跟邏輯運算符號

在JavaScript的世界中分敘述句 (Statement)」「運算式 (Expression)」

敘述句 (Statement)」

比較偏向去執行某個動作,例如變數宣告、賦值,迴圈和 if 判斷式等等都可以被歸類於此。

let dog

運算式(Expression)

「運算式 (Expression)」

通常是會產生一個值,像是我們在呼叫 function 時的參數 (arguments),或者透過 = 賦值時,在 = 「右側」的部分都屬於運算式的部分。


let a = 1 * 10

以下是在JavaScript中的運算符號

  • + 加法
  • - 減法
  • * 乘法
  • / 除法
  • % 取餘數

加法

function calc(a,b) {
        return a+b;
}

console.log(calc(2,4));  //6

今天我有一個函式clac帶入兩個參數ab並希望會得到兩個相加後的值。

那以此類推替換相應的運算符號就可以做到簡單的加減乘除。

那上面有提到一個%這個符號可以取餘數,相信很多剛踏入程式的小夥伴一定不知道可以幹嘛

不用擔心我一開始也不知道取餘數的概念是什麼/images/emoticon/emoticon06.gif

舉個例子來說:

《孫子算經》今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?

看到這邊一定有人覺得你又在講什麼鬼? 古文共賞?/images/emoticon/emoticon03.gif

白話解釋是這樣:

有一個X不知道多少,X除以3餘2,X除以5餘3, X除以7餘2,請問X=?

答案:X = 23

  • 23/3 = 7...2
  • 23/5 = 4...2
  • 23/7 = 3...2

或者用mod (中文念作對...取餘數) 來表示:

23 mod 3 = 2  23對3取餘數等於2

23 mod 5 = 3  23對5取餘數等於3

23 mod 7 = 2  23對7取餘數等於2

那一定有小夥伴好奇為什麼要取餘數? 取於數的用途就是

  • 倍數判斷:A % B 為 0 時,可以整除餘數會是0代表A是B的倍數。

  • 分組:若對座號取餘數3,可以快速分出三個小組{ 3, 6, 9... }、{ 1, 4, 7... }、{ 2, 5, 8... }

遞增 ++ 與遞減 --

let a = 10

a++

console.log(a) //11

這個a++的概念就是a = a + 1會一直往上遞增,會常見用於迴圈設立條件中。

那如果將遞增運算子作為後綴(例如 a++),則會先回傳原本的值,再進行遞增。

若作為前綴(例如 ++a),則會先進行遞增,再將遞增後的結果回傳。

借一下MDN上面的例子:

let x = 3;
y = x++;

// y = 3
// x = 4
let a = 2;
b = ++a;

// a = 3
// b = 3

以此類推a--也是一樣的不過是遞減。


JavaScript比較

JavaScript比較的方式是用兩個=去做比較,比較後得到 truefalse

let a = 1
let b = 1

console.log(a == b); //true

但是。對就是這個但是!/images/emoticon/emoticon07.gif

let a = 1
let b = "1"

console.log(a == b); //true

等等?為什麼數字會等於字串?這是什麼魔術???/images/emoticon/emoticon06.gif

其實JavaScript有一個功能叫做自動轉型,如果你用到運算符號Javascript會自動判別你是要做運算,

而把字串自動轉為數字,只能說這個設計太人性化了!萬的佛/images/emoticon/emoticon07.gif

let a = 1
let b = "1"

console.log(a + b); // 2

所以後來又出現三個=,這我會解讀成是嚴格比較。

let a = 1
let b = "1"

console.log(a === b); //false

這樣子就不會有自動轉型的問題。所以如果對於型別沒辦法很清楚容易辨別會建議用這種方式。


那今天對於比較與運算符號的介紹就到這邊。各位明天見!

參考文獻

(重新認識 JavaScript: Day 07 「比較」與自動轉型的規則)

重新認識 JavaScript: Day 06 運算式與運算子

取餘數 %


上一篇
Day24 JavaScript lexical scope跟Closure 閉包
下一篇
Day26 JavaScript 淺談callback function跟promise
系列文
30天前端網頁基礎觀念(HTML,CSS,Javascript,blender)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言