iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0

菜菜菜的前端學習日誌 - Day14

運算子

運算子大家應該都很了解

運算子 描述
+
-
*
/
% 餘數
++ 遞增
- - 遞減
ll OR
&& AND
?: 條件式
> >= 大於、大於等於
< <= 小於、小於等於
== === 寬鬆相等、嚴格相等
!= !== 寬鬆不相等、嚴格不相等

運算子的優先序

那這些運算子的優先順序呢?!
小學大家應該都學過先乘除、後加減
那其他的就讓我們來看看

首先優先順序最高的會是()()內的運算式會優先被執行

再來是* / %,就像我們學過的乘除會先運算

下面就是+ -

接下來的順序是

> >= < <=
== != === !==
&& AND運算會再OR運算之前
||
?:最後才是判斷式的運算

實際驗證

先來個簡單到小學生都會的

var a =2, b=3, c=4, d=5;
(a + b) * c + d;
//()內先執行,然後先乘除後加減
//沒錯!答案就是25

再來進階一點的

var a = 3;
var b = 5;
var c = true;
var d = false;
var e = "false";

a > b || c && d == e

答案會是什麼呢?我們來看一下怎麼運算
首先>會先運算,a > b會是 false
接下來 d == e 他是寬鬆相等,會強制轉型去比較值是否相同,所以會是true
再來就是c && true運算會是true
最後就是前面的false || true運算
得到的最終結果就是false啦!!!

最後來一個複雜一點的做收尾

var a = 3;
var b = 5;
var c = true;
var d = false;
var e = "false";

a > b || c ? c && d || a < b ? c == e && d : a >= b === e : c || d

看到這運算式直覺就會覺得吃飽太閒才這樣寫
但是為了能夠更清楚地知道運算子的優先順序還是來看一下好了哈哈

首先因為裡面有判斷式所以我們先從第一個?前面開始看

a > b || c         //a > b是false ,false || c會是True

判斷是true所以就要來執行下面這段

c && d || a < b ? c == e && d : a >= b === e 

同樣的是一個判斷式,所以先執行?前面的程式

c && d || a < b
//首先執行 a < b會得到 true
//接下來執行 c && d 得到 false
//最後 false || true 得到 true

得到true後就來執行以下這段

 c == e && d 
// c == e會先運算得到false,因為值跟型態都不一樣
// 再來運算false && d 得到了最終的答案就是false

呼~ 得到答案啦
其實這運算式看似很複雜,但只要弄清楚他的優先順序會發現其實並不難呢


上一篇
迴圈與函數
下一篇
好用的Array Method(迭代)
系列文
菜菜菜的前端學習日誌30

1 則留言

0
微中子
iT邦新手 4 級 ‧ 2018-01-02 09:55:28

實際寫的時候我們通常還是會加括弧

  • 好閱讀
  • 好排版
Andy Tsai iT邦新手 5 級 ‧ 2018-01-02 09:58:45 檢舉

是的,您說的沒錯

我是透過這樣的表達方式來呈現運算子的優先

但實際應用上會使用括弧增加辨識度

感謝您的提醒~

Hanfour iT邦新手 5 級 ‧ 2019-06-14 15:13:44 檢舉

Andy~~~~(搖旗

Andy Tsai iT邦新手 5 級 ‧ 2019-07-11 15:31:15 檢舉

!!!!!!!

我要留言

立即登入留言