iT邦幫忙

0

為了轉生而點技能-JavaScript,day4(運算子特性-precedence與associativity

運算子特性

1. 優先性(precedence):指的是一行程式列中如果才在2個以上的運算子,會依照優先順位,順位高的先執行,優先性順位表可以參考MDN的表格(Table)

這邊附上常見平方、加、減、乘、除的優先順位(表格內的數字)以及下面會談到的相依性。
https://ithelp.ithome.com.tw/upload/images/20211123/20143762Smtm2kzlUu.jpg

var a = 3 * 3 + 4 * 4 //乘號的優先性比加號高所以優先運算。

2. 相依性(associativity):每個運算子的相依性都有所不同,而相依性決定運算的方向;當優先序相同時,使用相依性決定運算方向。

  • 右相依性(right-associativity):表示處理順序為從右至左,賦值運算子。 (Assignment operators)、單元運算子、平方運算都是右相依性。
let a = 3;

console.log(a **= 2);
// expected output: 9

console.log(a **= 0);
// expected output: 1

let a = 2;

console.log(a *= 3);
// expected output: 6
  • 左相依性 (Left-associativity) ,表示處理順序為從左至右,常見的2元運算子:加減乘除都是。


例子:

第一題:

a = b = 3;

解:
步驟一:b = 3;3賦予變數b。
步驟二:b = 3因為是表達式;所以回傳新的值(來自b = 3的結果)。
步驟三:a = (來自b = 3的結果),值賦予變數a。

第二題:

console.log(1 < 2 < 3);//ture
console.log(3 < 2 < 1);//false

解:console.log(1 < 2 < 3)why是ture。
步驟一:console.log(1 < 2):true。
步驟二:console.log(true < 3):此時涉及隱式轉換,boolean值轉Number時;true為1,false為0。
步驟三:console.log(1 < 3):true。

第三題:

        var x = 5;
        var y = 10;
        var z = 25;
        x = y
        console.log(x, y);      //10,10
        x = y = z
        console.log(x, y, z);   //25,25,25
        y = x = z
        console.log(x, y, z);   //25,25,25
  • 注意,這邊的Z在同一時刻內,會同時分別賦值與x及y!!!!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言