今天想要來談談有關JavaScript的比較跟邏輯運算符號
在JavaScript的世界中分敘述句 (Statement)」
與 「運算式 (Expression)」
。
比較偏向去執行某個動作,例如變數宣告、賦值,迴圈和 if 判斷式等等都可以被歸類於此。
let dog
「運算式 (Expression)」
通常是會產生一個值,像是我們在呼叫 function 時的參數 (arguments),或者透過 =
賦值時,在 =
「右側」的部分都屬於運算式的部分。
let a = 1 * 10
以下是在JavaScript中的運算符號
+
加法-
減法*
乘法/
除法%
取餘數function calc(a,b) {
return a+b;
}
console.log(calc(2,4)); //6
今天我有一個函式clac
帶入兩個參數a
跟b
並希望會得到兩個相加後的值。
那以此類推替換相應的運算符號就可以做到簡單的加減乘除。
那上面有提到一個%
這個符號可以取餘數,相信很多剛踏入程式的小夥伴一定不知道可以幹嘛
不用擔心我一開始也不知道取餘數的概念是什麼
舉個例子來說:
《孫子算經》今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?
看到這邊一定有人覺得你又在講什麼鬼? 古文共賞?
白話解釋是這樣:
有一個X不知道多少,X除以3餘2,X除以5餘3, X除以7餘2,請問X=?
答案:X = 23
或者用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比較的方式是用兩個=
去做比較,比較後得到 true
或 false
。
let a = 1
let b = 1
console.log(a == b); //true
但是。對就是這個但是!
let a = 1
let b = "1"
console.log(a == b); //true
等等?為什麼數字會等於字串?這是什麼魔術???
其實JavaScript有一個功能叫做自動轉型
,如果你用到運算符號Javascript會自動判別你是要做運算,
而把字串自動轉為數字,只能說這個設計太人性化了!萬的佛
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 運算式與運算子