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
是的>< 謝謝指正