續前文所述,當我們使用兩個等號(==)作比較運算時,深受JavaScript「自動轉型」的干擾,結果難料。每當 == 兩端值的資料型態不同時,就會發生自動轉型。比如:
除了等號比較,自動轉型的影響也及於大於(>)、小於(<)、大於等於(>=)、小於等於(<=)的比較。布林值的轉型與==相同。若其中一側不是數字,會被「自動轉型」為數字。若是「字串」與「字串」相比較,會以字母順序來決定大小。
人如其名,本運算子可用於值的指派,如最簡單的一個等號(將右邊的值指派給左邊的變數)
let kageBunshin = 10 * 10;
亦可結合數學運算:
let kageBunshin += 10; //即 影分身 = 影分身+10
逗號(,)可以將同一運算式下的更多式子彼此隔開,也可以將兩行的宣告寫成一行。如:
let Nihonium = 113;
let Flerovium = 114;
可以寫為:
let Nihonium = 113, Flerovium = 114;
一般所指的邏輯判斷,是指「而且」、「或者」、「並非」的二元判斷,如:
100 === 100 && 1000 === 1000 //true
100 === 100 || 1000 === 500 //true,因為左邊符合
!(10 > 100) //true,因為條件是「若false時為ture」
有關&&與||在邏輯運算中的具體關係,可參考表格如下:
然而,若直接以一個if條件式帶入兩個變數/值作判斷,卻未必能得到預期中的true/false結果。原因是在JavaScript中,布林值(boolean)與數值(number)不會彼此相等,沒有其他語言中「true = 1」「false = 0」的性質(只經過強制轉型呈現類似情狀)。
易言之,JavaScript的「值」分為兩種:
有關更進階的資訊,建請以關鍵字「Truthy值」、「Falsy值」作深入研究。