運算子
MDN : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Expressions_and_Operators
一元運算子
delete , typeof 等等
三元運算子
(條件 ? 為 true 回傳此結果(表達式) : 為 false 回傳此結果(表達式))
var dollar = 100;
var result = (dollar > 5 ? '有錢' : '沒錢');
// 三元運算子回傳 有錢
// 再賦予到 result 上
// 由於 = 也是運算子 所以會回傳 有錢
console.log(result); //有錢
優先性及相依性
MDN : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
優先性
決定運算子彼此之間被語法解析的方式
優先性較高的運算子會成為優先性較低運算子的運算元
ex:
乘號優先性 大於 加號
相依性
決定運算方向
ex:
加號 : 由左至右
等號 : 由右至左
console.log(1 < 2 < 3); // true
console.log(3 > 2 > 1); // false
這裡一定會好奇
console.log(3 > 2 > 1);
為什麼是false呢???
說明一下
// console.log(3 > 2 > 1);
// 這裡會拆解成
// console.log(3 > 2 ); // 回傳 true
// console.log(true > 1); // true 再跟 1 比對
// true 轉型成數值 1
// 所以會變成 console.log( 1 > 1); //false
再來看一個例子
var a = 1;
var b = 2;
a = b = 3;
// 這裡 a 實際接收到的是 3 賦予到 b 所 "回傳的結果"
// 並非直接取 b 的結果
console.log(a,b);
這時一定心想
XXX 是在繞口令是不是!!
我們再舉一個例子
var b = {};
// 在 b 物件新增 a 屬性 且不可寫入
//這段會在後面介紹
Object.defineProperty(b,'a',{
value : 2,
writable : false,
})
var a = 3;
a = b.a = 1;
// 因為 b.a = 1 是表達式,所以會回傳一個結果
// 因此 a 是接收 b.a = 1 此表達式所回傳的結果
console.log(a , b.a); // 1 b.a依然是2
那今天的介紹就到這裡
若有任何問題 或 內容有誤
都可以跟我說唷!!