iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
1
自我挑戰組

JavaScript核心篇系列 第 10

【JavaScript 核心】運算子 & 優先性 & 相依性

  • 分享至 

  • xImage
  •  

運算子

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

參考資料
MDN 運算式與運算子
MDN 運算子優先序


上一篇
【JavaScript 核心】原始型別 & 物件型別
下一篇
【JavaScript 核心】==、=== & 隱性轉型
系列文
JavaScript核心篇19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
iT邦新手 1 級 ‧ 2019-10-12 22:52:49

不好意思,想請問一下:

其中這裡是不是想要 console.log(b.a)

b.a = 3;   
console.log(b); // 2
kumo iT邦新手 5 級 ‧ 2019-10-13 01:12:00 檢舉

是的>< 謝謝指正

我要留言

立即登入留言