close

嗨~我是文科少女!
今天來聊聊運算子~
從文字上來拆解運算子指的也就是用來運算的符號,至於是用來運算什麼的呢?
那就讓我們接著看下去吧!
在JavaScript世界裡面的運算子,分為以下四種。
算數運算子、賦值運算子、比較運算子、邏輯運算子
接下來就來用文科腦來為大家說明差異~

1. 算數運算子:簡單來說就是用來計算數字的符號,最基本的也就是加減乘除,所以通常會在計算數值的時候使用。
基本的運算子符號
加:+ (ex: 2 + 1=3)
減:-  (ex: 8 - 1=9)
乘:* (ex: 3 * 2=6)
除:/ (ex: 10 / 2 = 5)
其他較特別的運算子符號
取餘數:% (ex: 10 % 2 印出結果是0、 8 % 3 印出結果是1)
*取餘數意思是前後數字相除的餘數,如果可整除顯示0,除無法整除就會顯示1。
將值增加1:++ (ex: x=2的時候,x++會讓x變成3)
將值減少1:-- (ex: x=2的時候,x--會讓x變成1)
指數:** (ex: 3**2 等於3的二次方,也就會變成9)

注意!!
以上內容主要都是在計算數值時會出現,不過其中++--有一個比較會讓人搞混的地方,花點時間來了解一下吧^^
在JavaScript中,寫成++x和x++會印出不一樣的結果喔!
當寫成x++時,系統會先顯示一次x再進行+1
當寫成++x時,系統則會先進行+1動作在顯示+1後的x

所以當我們用console.log印出相關內容時,就會有以下的結果出現
image
在console.log中的第一個x非常好理解,就是等於4
第二個x則是可以拆解為上面所提到的,先印出目前的x的動作
*它到底+1了沒???
=>第二個x有+1但是它並未在這一個步驟馬上就顯示,它的+1會顯示在下個步驟裡
可以看看以下這張圖,因為我在x++和++x中間又加了一個x,讓系統多列印一次x,所以多加入的那一個x也就會顯示已經+1過後的x
image
再來最後一個++x為什麼會顯示為6呢?
這部分應該不難理解了,因為前面的x已經被+了一次1,在++x時,又多加了一次1當然就會變成4+1+1等於6囉!
也就是說這裡的++x可以拆解為已經被+1過一次的x又再加1一次,因為這裡是++放前面,也就不用先印出未加1的x,直接顯示最終結果。
TIP!
可以把x寫在前的x++記成先顯示x,++顯示在前的++x則因為先出現++符號所以直接進行計算。


2. 賦值運算子:從字面上來看就是讓某個東西被賦予一個數值,最基本的就是我們在宣告變數時會使用的"="符號,
雖然它是我們大眾所認定的等於符號,但在這裡它存在的意義應該是將左邊的值賦予右邊的東西。
除此了等於之外,還有其他可以搭配算數來使用的符號。

假設x=6,y=2
加:+= (ex: x+=y 代表的意思是 x = x + y,所以會印出8)
減:-= (ex: x-=y 代表的意思是 x = x - y,所以會印出4)
乘:*= (ex: x*=y 代表的意思是 x = x * y,所以會印出12)
除:/= (ex: x/=y 代表的意思是 x = x / y,所以會印出3)
餘數:%= (ex: x%=y 代表的意思是x = x % y,所以會印出0)

注意!!
在JavaScript中若有類似x=x+y這樣的算式出現時(也就是一個算式中,等於符號左右都有x時),
記得從右至左進行計算,也就是說等於右邊的x是進行計算前的x(也就是舊的x),等於左邊的x則是進行計算後的x(也就是新的x)

3. 比較運算子:比較運算子,以文字面來看,就是比較兩個不同的值,也就是等於大於小於。在個部分會在比較完數值後,回傳布林值,也就是true或false。

寬鬆的等於:== 
嚴格的等於:===
寬鬆的不等於:!==
嚴格的不等於:!===
*寬鬆的等於和寬鬆的不等於不會檢查資料型別,所以建議一律使用嚴格的等於和嚴格的不等於。
也就有可能出現以下的狀況,''單引號內的1代表的是字串(以人類腦袋來看的話,就會是國字一),不是數字,所以這兩個型別不同的東西應該是不會相等的,
但在寬鬆的等於下則會顯示為相等,為了避免讓電腦有這類的判斷錯誤,寫成嚴格的符號會比較安全。
image
大於:>
小於:<
大於等於:>=
小於等於:<=


4. 邏輯運算子:邏輯運算子有點像是我們在說話或寫文章中會用的一個連結詞,也就是 「而且」、 「或者」、 「非、不是」在程式語言中的表現方式。 
而且:&& (必須前後的值都為true,才會回傳true)
或者:|| (只有有一個值為true,就會回傳true)
非、不是:! (將原本的值改為相反的值)
現在我們來假設一個狀況,用邏輯運算子寫看看適用於此優惠的情況
前提狀況是:為今日壽星,且有帶證件者,即可享用5折優惠
符合優惠條件的邏輯運算子寫法也就會變成以下這樣
userBirthday === today && hasIdentityCard

注意!!
上述的邏輯運算子中的使用者生日為今天的這句話,不可以使用單一個的等於"="符號,因為單獨的等於表示的意思是賦值,
如果寫成userBirthday = today,就會變成讓使用者的生日變成今天日期的意思(也就是使用者可能是3/9生日,我們卻硬要把它改成2/5生日的這種概念),而並非比較左右兩個值的關係。

以上這裡就是各種運算子的介紹內容,這一部分也是基礎到不行的東西。
只是當初在學的時候,還是偶爾有點搞混,這邊也特別把容易搞混的地方標出來了!
希望和我一樣是初學者的朋友們可以看得懂,也歡迎在底下留言和我一起討論喔!
那今天的學習紀錄就到這裡了,掰餔^^

arrow
arrow
    創作者介紹
    創作者 文科少女寫程式 的頭像
    文科少女寫程式

    文科少女學程式

    文科少女寫程式 發表在 痞客邦 留言(0) 人氣()