轉生第十六日,這一篇將會來介紹運算子的優先性與相依性。
在運算子中都有一個優先性可以參考,例如說我們在計算數學的時候都會有一個優先順序,例如先乘除後加減的概念,在 JavaScript 也是一樣類似的觀念,因為實際開發的時候,運算子通常不會只有一個,通常都會是複數以上,所以優先性的觀念就格外的重要。
那麼我們該如何知道優先性呢?後面我會補文件,但先來講幾個常用的運算子的優先性就好 ↓
相依性只有在優先性都相同時,才會啟動的東西,首先來個經典範例:
1 < 2 < 3; // true
依照我們人腦來判斷 1 是小於 2,並且 2 小於 3 ,所以這是沒有問題的,但是如果是這樣呢?
3 < 2 < 1;
那這個答案會是 true
,此時一定會很疑惑,3 怎麼會小於 2,那 2 又怎麼會小於 1 呢?
這個問題出在相依性,前面有講到當優先性等級都相同時,JavaScript 就會改以相依性做判斷,首先大於的相依性是從左至右,所以會先執行 3 < 2
,3 < 2
是 false
,畢竟 3 並沒有小於 2,所以此時這一段程式碼就會變成這樣:
false < 1;
那這邊重點來了,由於 JavaScript 會自動轉換型別,所以 false
就會被轉換成 0,那麼就會變成 0 < 1;
,所以答案才會是 true
。
所以當如果運算子感覺起來很奇怪的時候,就可以試著來翻一下 MDN 這一份運算子優先性與相依性的 文件
只要知道這個相關觀念,那麼遇到優先性相同的運算子你也能夠立刻知道該執行哪一邊,只是會需要翻一下文件而已。
下一篇的 RE:從零開始的學習 JS 生活-第十七日 將會介紹 Cookie。
本文同步發表於:https://hsiangfeng.github.io/javascript/20191001/4074116676/