iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
Modern Web

30天入門JavaScript系列 第 3

【Day 3】值的運算(加減乘除)跟比較(==、===)

加減乘除這種東西還需要講嗎? 要

值的加法

變數A = 變數A + 變數B;

如果是程式新手,可能會寫個變數A + 變數B,然後問值怎麼沒變
運算完的值如果沒有存是不會儲存的,想把A的值加上B的話記得把結果值賦給A

let numA = 10;
let numB = 5;
console.log(numA + numB); //15
console.log(numA); //10
numA = numA + numB;
console.log(numA); //15

值相加的規則

  • 兩邊值都是數字,則正常的相加
  • 如果兩邊都是字串,則把兩個字串拼接
  • 如果其中一邊是字串,則把另一邊轉型成字串拼接
  • 如果其中一邊是數字另一邊不是字串,會把另一邊轉成數字
let numA = 5;
let numB = 10;

let strA = 'hello';
let strB = 'world';
let strC = '5';

let noData = null;

console.log(numA + numB);   //15
console.log(strA + strB);   //helloworld
console.log(strA + numA);   //hello5
console.log(numA + strC);   //55      你以為會是10嗎?

console.log(strA + noData); //hellonull
console.log(numA + noData); //5

值的減法

跟加法的差異是沒有字串拼接這功能,基本只用來做數學運算

值相減的規則

  • 兩邊值都是數字,則正常的相減
  • 如果有不是數字的值,則會被轉型成數字相減
let numA = 5;
let numB = 10;

let strA = 'hello world';
let strB = 'world';
let strC = '5';

let noData = null;

console.log(numA - numB); //-5
console.log(strA - strB); //NAN   字串不能用相減來裁切

console.log(numA - strC); //0
console.log(numA - noData); //5

乘法跟除法基本跟減法規則差不多,記得沒事別拿數字以外的型別做減乘除。

變數++跟變數--

變數++效果等同變數 = 變數 + 1;
變數--效果等同變數 = 變數 - 1;

分成有++在後面的變數++跟在前面的++變數

差別在變數++變數--,會在此行程式執行完後做加1減1(不影響此行結果)
++變數--變數則是會在此行程式執行前就先做加減,結果會直接影響。

let numA = 5;
let numB = 10;

console.log(numA++);        //5   印出了5 但印完後numA已經變成6
console.log(numA);          //6
console.log(++numA);        //7

console.log(numA++ + numB); //17
console.log(numA);          //8
console.log(--numA + numB); //17   先減1才做運算結果會直接反映

值的比較

用來比較兩個值是否相同,相同的話結果為true,反之為false
比較有==(相等)跟===(全等)兩種

差別是作相等比較時,會將兩邊值轉成同一型別作比較,
全等則是要在不轉型別的情況下相同才會true

另外有比較是否不同的!=(不相等)跟!==(不全等)

範例


let numA = 0;
let str = '0';
let aNull = null;
let aUndefined;

console.log(numA == str); //true     經轉型別後相同
console.log(numA === str); //false   未轉型別就不同

console.log(numA == false); //true       ?
console.log(str == false); //true        ??
console.log(aNull == aUndefined); //true ???

將值轉型別後會有很多匪夷所思的結果,建議在做比較時請用===!==

本來昨天預告說今天寫數字,結果發現沒講運算的情況數字能寫得太少只好延期(
今天就不做預告了,我想想明天該寫數字還是判斷式...


上一篇
【Day 2】變數和資料型別
下一篇
【Day 4】數字型別跟Math方法
系列文
30天入門JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
qpalzm
iT邦新手 1 級 ‧ 2020-09-04 08:50:43

變數--跟--變數原理相同 ,想請問這裡這樣說是不是怪怪的,
如果放在迴圈裏面先減後減會差很多不是嗎?懇請指教~~/images/emoticon/emoticon41.gif

bt iT邦新手 5 級 ‧ 2020-09-04 16:18:32 檢舉

抱歉,可能我講的不是很清楚~
這句講得是
變數--變數++ 原理相同
--變數++變數 原理相同
這兩組差別只是運算時是加1跟減1,

可能我敘述讓人誤會--變數變數--是一樣的功能,
這兩個也是有執行前減1跟執行後減1的差別
我會改一下敘述,感謝留言0.0/

qpalzm iT邦新手 1 級 ‧ 2020-09-04 17:29:40 檢舉

/images/emoticon/emoticon37.gif

我要留言

立即登入留言