-
一元操作符
- 只能夠操作一個(gè)值的操作叫做一元操作符。
① 和遞減操作符
[01] 前置型,遞增和遞減操作在包含他們的語(yǔ)句被求值之前就執(zhí)行。
[02] 后置型,遞增和遞減操作在包含他們的語(yǔ)句被求值之后才執(zhí)行。
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; //21
var num4 = num1 + num2; // 21
-----------
var num1 = 2;
var num2 = 20;
var num3 = num1 -- + num2; //22
var num4 = num1 + num2; //21
② 一元加和減操作符
一元加操作符對(duì)結(jié)果不會(huì)有任何影響
一元減操作符主要用于表示負(fù)數(shù)。
-
位操作符
01 按位非(NOT)使用~表示,執(zhí)行按位非得結(jié)果就是返回值的反碼。操作數(shù)的負(fù)值減去1
var num1 = 25;
var num2 = -num1 -1; //-26
console.log(~num1) //-26
02按位與(AND)使用&表示,操作兩個(gè)操作數(shù)。 只要有0 就為0
03按位或(OR)使用 | 表示,操作兩個(gè)操作數(shù)。 只要有1 就為1
按位異或(XOR)使用 ^ 表示,操作兩個(gè)操作數(shù)。相同則為 0 , 不同則為 1
左移 | 右移( | 有符號(hào) | 無(wú)符號(hào))
-
布爾操作符
- 布爾操作符一共有三個(gè),分別是:
非 , 與 , 或
(邏輯運(yùn)算符) - 01
邏輯非符號(hào):!說(shuō)明:取反的意思,可以應(yīng)用于任何值,??!相當(dāng)于沒(méi)有操作。 - 02
邏輯與符號(hào):&&說(shuō)明:兩個(gè)值都為真的時(shí)候,結(jié)果為真。屬于短路操作,如果第一個(gè)操作數(shù)能夠決定結(jié)果,那么就不會(huì)再對(duì)第二個(gè)操作數(shù)求值。 - 03
邏輯或符號(hào):||說(shuō)明:兩個(gè)值只要有一個(gè)為真,那么結(jié)果為真。屬于短路操作,如果第一個(gè)操作數(shù)為真,那么久不會(huì)再對(duì)第二個(gè)才做數(shù)求值了。技巧: 可以利用邏輯或短路操作的特點(diǎn)來(lái)避免為變量賦null或undefined值。
var myObject = refObiect || backupObject;
//如果refObject的值不是null,那么它的值將被賦值給myObject
//如果是null,那么就將backupObject的值賦給myObject。
邏輯或(||)
語(yǔ)法:表達(dá)式1 || 表達(dá)式2
結(jié)果:
判斷表達(dá)式1,如果表達(dá)式1為真,那么就返回表達(dá)式1
如果表達(dá)式1的值為假,那么就返回表達(dá)式2
<script>
var resultA = 3 || 2; //3
var resultB = 0 || 2; //2
var resultC = 5 || 0; //5
var resultD = 0 || 0; //0
</script>
邏輯與(&&)
語(yǔ)法:表達(dá)式1 && 表達(dá)式2
結(jié)果:
如果表達(dá)式1為真,返回表達(dá)式2
如果表達(dá)式1為假,返回表達(dá)式1
<script>
var resultA = 3 && 2; //2
var resultB = 0 && 2; //0
var resultC = 5 && 0; //0
var resultD = 0 || 0; //0
</script>
-
乘性操作符
乘 * 除 / 取余 %
加性操作符
加 + 減 -
說(shuō)明:上述五種操作符在操作數(shù)為非數(shù)值的時(shí)候內(nèi)部會(huì)執(zhí)行自動(dòng)的類(lèi)型轉(zhuǎn)換。
-
關(guān)系操作符
大于 > 小于 < 小于等于 <= 大于等于 >=說(shuō)明:返回布爾類(lèi)型的值,要么為false,要么為true。
-
相等操作符
01 相等和不相等[先轉(zhuǎn)換再比較],符號(hào)是 == 和!=
賦值(=)
等于符號(hào)(==)
比較的時(shí)候只判斷數(shù)值是否是相等的
全等符號(hào)(===)
比較的時(shí)候不僅要比較數(shù)據(jù)還需要比較類(lèi)型
不等于(!=)
不全等于(!==)
<script>
var str1 = "讓我掉下眼淚的,不止你的溫柔";
var str2 = "讓我掉下眼淚的,不止你的溫柔";
console.log(str1 == str2);
var test1 = 1;
var test2 = "1";
console.log(test1 == test2); //true
console.log(test1 === test2); //false
//數(shù)組是引用(地址)類(lèi)型,存儲(chǔ)的是指向具體數(shù)據(jù)的地址(引用)
var arr1 = [1,2,3]; //0x11
var arr2 = [1,2,3]; //0x22
console.log(arr1 == arr2); //true or (false)
</script>
-
比較的規(guī)則
[01] 如果操作數(shù)中有布爾值,則先轉(zhuǎn)換為數(shù)值再比較。
[02] 如果是字符串和數(shù)值比較,則先將字符串轉(zhuǎn)換為數(shù)值再比較。
[03] 如果是對(duì)象和其他類(lèi)型的值比較,則先調(diào)用對(duì)象的valueOf方法,然后用得到的基本類(lèi)型值去比較。
[04] null和undefined是相等的。
[05] NaN和NaN不相等。
[06] 如果兩個(gè)操作符都是對(duì)象,則比較他們是不是同一個(gè)對(duì)象,如果指向的是同一個(gè)對(duì)象則返回true,否則返回false。
02 全等和不全等[僅比較不轉(zhuǎn)換],符號(hào)是===和!==
-
比較的規(guī)則
- [01] null和undefined是不全等的,因?yàn)樗鼈兪遣煌?lèi)型的值。
- [02] 類(lèi)型相同,且值相等,則返回true,否則返回false。
-
條件操作符
符號(hào):表達(dá)式1 ? 字面量1 :字面量2說(shuō)明:如果表達(dá)式1的結(jié)果為true,則使用字面量1,否則使用字面量2。
-
賦值操作符
符號(hào):=、+=、-=、*=、<<=等等
說(shuō)明:使用賦值操作符對(duì)性能而言,沒(méi)有任何的提升,只是簡(jiǎn)化了賦值操作而已。