JavaScript 同時具有二元運算子及一元運算子,
以及一種特殊的三元運算子,也就是條件運算子。
一元運算子:只需要一個運算元的運算,大部分都是單字。
var a = 2;
console.log(typeof a); 
//"number"
二元運算子:較常見的形式。
var a;
a = 1 + 1; 
// 回傳一個結果 2
三元運算子:又稱為條件運算子,包含兩個運算子及三個運算元
三元運算子語法:依據判斷式去回傳結果
condition ? expr1 : expr2
判斷式 ? 表達式1 : 表達式2
// 若condition 為 true 就會回傳 expr1
// 若condition 為 false 就會回傳 expr2
範例 1
var bmi = 15;
(bmi < 20)? '偏瘦' : '肉肉的';
//回傳 "偏瘦"
還可以透過 = 將三元運算子賦予到變數上
var b = (bmi < 20)? '偏瘦' : '肉肉的';
// b 將得到三元運算子的結果
console.log(b);
// "偏瘦"
優先性(Precedence):運算子之間的執行順序,優先序較高的運算子會成為優先序較低的運算子的運算元。
相依性(Associativity):相依性決定運算方向。
範例 1 -優先性* 優先序為 14, + 優先序為13, = 優先序為3
執行順序: *第一  +第二  =最後
var a = 2 * 2 + 2 * 3;
// a = 4 + 6;
// a = 10;
範例 2 -左相依性> 相依性關係為由左至右
console.log(1 < 2 < 3);
// true
console.log(3 > 2 > 1);
// false
// 
// 3 > 2 為 true
// true > 1 
// 1 > 1  // false
// true 經過型別轉換是1
範例 3 -右相依性
※解讀順序為:
b = 3 ;
a = 3 賦予至 b 的回傳結果
var a = 1;
var b = 2;
a = b = 3;
範例 4 -表達式與相依性
var b = {};    
Object.defineProperty(b, 'a', {      
  value: 2,      
  writable: false   // 禁止寫入   
});  
  
Object.defineProperty(b, 'b', {      
  value: 3,      
  writable: false    
});  
  
b.a = 3;   
console.log(b.a); // 2
   
var a = 3;    
a = b.b = b.a = 1; // 每一個片段都是表達式(會回傳一個值)   
console.log(a) // 1
 不好意思,想請問一下:
其中這裡是不是想要 console.log(b.a)?
b.a = 3;   
console.log(b); // 2
                                    是的>< 謝謝指正