首頁 >web前端 >js教程 >JavaScript 布林運算子解析 && || ! _javascript技巧

JavaScript 布林運算子解析 && || ! _javascript技巧

WBOY
WBOY原創
2016-05-16 17:50:561137瀏覽
1、邏輯非

邏輯非用!表示,可以套用與ECMAScript的任何類型的值,邏輯非操作傳回的是一個布林值(true/false)。這個運算子首先會將它的運算元轉換為一個布林值,然後再對其求反。

以下說明下Boolean()轉換函數的一組規則。
数据类型 转换为true的值 转换为false的值
Boolean true false
String   任何非空字符串 ""(空字符串)
Number  任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined  无 undefined
資料型別

轉換為true的值
轉換為false的值
Boolean true
false
String   任何非空字串
""(空字串)
Number  任何非零數字值(包括無限大)
0和NaN
Object 任何物件
null
Undefined  無
undefined

Boolean()轉換函數的簡便表示方法。 -----------! !


2.邏輯與
邏輯與運算符由兩個和號(&&)表示,有兩個運算元。 邏輯與操作可以應用於任何類型的操作數,而不僅僅是布林值。在有一個操作數不是布林值的情況下,邏輯與操作就不一定會傳回布林值;此時,它遵循一下規則: 1. 如果第一個操作數是對象,則傳回第二個操作數; 2. 如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象;
3. 如果兩個運算子都是對象,則傳回第二個運算元; 遵循第一規則。
4. 如果有一個操作是null,則回傳null;
5. 如果有一個操作符是NaN,則傳回NaN;
6. 如果有一個運算子是undefined,則傳回undefined。

邏輯與操作屬於短路操作,也就是如果第一操作數能夠決定結果,那麼就不會再對第二個操作數求值。 (可以理解為內部的兩個return操作)。因此當4、5、6規則衝突時,遵循短路操作原則。



複製程式碼 程式碼如下: var nul = null; na = NaN;
var test;
test = na&&nul;
document.write(test); //NaN






複製程式碼


程式碼如下:

因此,我們來總結一下。 && 操作主要遵循幾個原則:

1.短路操作原則;
2. 求值過程中會被轉換產生副本,但是回傳值是原來值;





複製程式碼

程式碼如下:
// 偽代碼
function &&(param1,param2){
bparam1 = Boolean(param1);
if (!bparam1) return param1;
bparam2 = Boolean(param2); return param2; } // 參數是一個物件時傳回引用的指標值,函數同 3、邏輯或 邏輯或符號以兩個垂直線符號(||)表示。 邏輯或符號同樣是短路操作符。其實作過程可以參照邏輯與的偽代碼。這裡就不再列出一些規則了。 邏輯或常用來做參數的預設處理,例如 evt = evt || window.event;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn