1、自增自減操作符:分為前置型和后置型;
前置型:++a;--a;
后置型:a++;a--;
例:
代碼如下:
對于正數來說>>和>>>的結果是一樣的;
對負數來說,由于負數以其絕對值的補碼形式表示,因此會導致無符號右移結果非常大。
三、布爾操作符
1、邏輯非 !
邏輯非用!表示,可以應用與ECMAScript的任何類型的值,邏輯非操作返回的是一個布爾值(true/false)。該操作符首先會將它的操作數轉換為一個布爾值,然后再對其求反.
??!相當于Boolean()函數。
Boolean()轉型函數的一組規則。
數據類型 轉換為true的值 轉換為false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零數字值(包括無窮大) 0和NaN
Object 任何對象 null
Undefined 無 undefined
2、邏輯與&&
邏輯與有兩個操作數。
邏輯與操作可以應用于任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時,它遵循一下規則:
1. 如果第一個操作數是對象,則返回第二個操作數;
2. 如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象;
3. 如果兩個操作符都是對象,則返回第二個操作數; 遵循第一規則。
4. 如果有一個操作數是null,則返回null;
5. 如果有一個操作數是NaN,則返回NaN;
6. 如果有一個操作數是undefined,則返回undefined。
邏輯與操作屬于短路操作,即如果第一操作數能夠決定結果,那么就不會再對第二個操作數求值。(可以理解為內部的兩個return操作)。因此當4、5、6規則沖突時,遵循短路操作原則。
代碼如下:
var nul = null;
var na = NaN;
var test;
test = na&&nul;
document.write(test); //NaN
代碼如下:
var nul = null;
var na = NaN;
var test;
test = nul&&na;
document.write(test); //null
3、邏輯或||
邏輯或有兩個操作數。
邏輯或與邏輯與相似,操作可以應用于任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯或操作就不一定返回布爾值;此時,它遵循一下規則:
1. 如果第一個操作數是對象,則返回第一個操作數;
2. 如果第一個操作數的結果是false,則返回第二個操作數;
3. 如果兩個操作符都是對象,則返回第一個操作數,遵循第一條規則。
4. 如果兩個操作數都是null,則返回null;
5. 如果兩個操作數都是NaN,則返回NaN;
6. 如果兩個操作數都是undefined,則返回undefined。
邏輯或操作屬于短路操作,即如果第一操作數結果為true,那么就不會再對第二個操作數求值。
我們可以利用邏輯或的這個特性來避免為變量賦null或undefined的值
例如:var myObject=firstObject||secondObject
如果firstObject不是null,則firstObject被賦值給myObject,否則將secondObject的值賦給myObject.
以上內容就是本文的全部了,希望對大家能有所幫助
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com