算數運算符
算數運算符 | 描述 |
---|---|
+ | 加 |
- | 減 |
* | 陳 |
/ | 除 |
% | 取餘 |
+ + | 累加 |
- - | 遞減 |
i ++
與++ i
的區別
i ++
:先賦值後計算,
++ i
:先計算後賦值。
var i= 1;
var s = i ++ + ++ i;
for(var a = 0;a < 100;a ++)
{
i = i ++;
};
console.log(i);
問上題 i
的結果
第一步:i = 1
;
第二步:s = i ++ + ++i
;其中 i++
後 i = 2
,其次 ++i
後 i = 3
;
第三步:循環100次的 i = i ++
;每一次循環 i ++
先賦值給 i ,在進行自加,所以 i 的結果不變,i = 3
;
則本題結果i= 3;
算數運算符的優先級:
先*
/
%
後+
-
邏輯運算符
邏輯運算符 | 描述 |
---|---|
丨丨 | 或 (一真爲真) |
&& | 且(一假爲假) |
! | 非 |
算數運算符
算數運算符 | 描述 | 結果 |
---|---|---|
+ = | x + = y | x = x + y |
-= | x-= y | x = x - y |
* = | x * = y | x = x * y |
/ = | x+= y | x = x / y |
% = | x %= y | x = x % y |
var x = 5;
var y = 6;
x += y;
console.log(x);
上題中聲明瞭兩個變量x
, y
,當x += y
時,即x = x + y
,則輸出x = 11
。
三元運算符
三元運算符需要三個操作數。語法爲:條件表達式?表達式1:表達式2。
條件表達式:執行判斷,返回布爾值;
表達式1:返回結果爲:true 執行的內容;
表達式2:返回結果爲:false 執行的內容(可嵌套三元運算符)。
var score = 80;
var result = score >= 90 ? "優秀" : score >= 60 ? "及格" : "不及格"
console.log(result);
上題中判斷得分是否爲優秀,及格或者不及格,首先判斷score >= 90
,返回false
。則再次判斷score >= 60
,返回爲true
,則輸出及格。
位運算符
按位與
&
二進制對應都爲1的時,則該位的結果爲1,反之爲0。
var num1 = 5;
var num2 = 3;
var r = num1 & num2;
console.log(r);
5:101
3:011
--------
r:001 1
可用於判斷奇偶性
console.log( (10 & 1) === 0 );//true偶數
console.log( (9 & 1) === 0 );//false奇數
按位或
|
二進制對應存在1的時,則該位的結果爲1,反之爲0。
var num1 = 5;
var num2 = 3;
var r = num1 & num2;
console.log(r);
5:101
3:011
--------
r:111 7
可用於與0按位或向下取整。
按位左移
<<
二進制向左移動N位,右邊以0補位。
console.log(2 << 1);// 4
console.log(2 << 2);// 8
console.log(2 << 3);// 16
console.log(2 << 4);// 32
按位右移
>>
二進制向右移動N位,左邊邊以0補位。
console.log(8 >> 1);//4
console.log(8 >> 2);//2
console.log(8 >> 3);//1
console.log(8 >> 4);//0
異或
^
二進制對應只存在一個1的時,則該位的結果爲1,反之爲0。
var num1 = 5;
var num2 = 3;
r = num1 ^ num2
console.log(r);
5:101
3:011
---------------
r:110 6
可用於num1
與num2
值得交換。
num1 = num1 ^ num2;
5: 101
3: 011
------------
num1: 110 6
num2 = num2 ^ num1;
3:011
6:110
----------
num2: 101 5
num1 = num1 ^ num2;
6:110
5:101
----------
num1: 011 3