iT邦幫忙

0

JS 運算子 與 優先性及相依性 DAY53

  • 分享至 

  • twitterImage
  •  

運算子

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

那今天的介紹就到這裡
若有任何問題 或 內容有誤
都可以跟我說唷!!/images/emoticon/emoticon51.gif


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

尚未有邦友留言

立即登入留言