JavaScript中邏輯運算符


一、JavaScript“邏輯”運算符

很多學習 JavaScript的人,容易被 JavaScript 的邏輯運算符的運算規則搞暈。為什么呢?因為
JavaScript的邏輯運算符和其他語言(比如:java、c#、c等)有着很大的不同。其他那些強類型的語言的
邏輯運算符參數運算的都是true或false,結果也一定是true或false,很容器理解和記住。而JavaScript
的"邏輯運算符"參與運算的可以是任意類型,結果也可能是任意類型,規則及其復雜。所以,JavaScript中,
他們已經不是真正的"邏輯運算符"了,所以我才給他們打上引號。

二、JavaScript中的邏輯運算符

首先說一下,其他數據類型轉換為布爾類型的規則: 
null、undefined、0、NaN、空字符串轉換為false,其他轉化為true。 
javascript中有三種邏輯運算符:

1. 取反 ! 
首先把數據轉化為布爾值,然后取反,結果為true或false

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(!"");
console.log(!d);
console.log(!a);
console.log(!b);
console.log(!obj);
</script>

 

結果: 
這里寫圖片描述 
2. 邏輯與 && 
js中邏輯與和其他語言不太一樣,如果第一個操作數是true(或者能夠轉為true),計算結果就是第二個操作數,如果第一個操作數是false,結果就是false(短路計算),對於一些特殊數值不遵循以上規則.

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true && 10);//第一個操作數是true,結果是第二個操作,也就是10
console.log(false && b);//第一個操作數是false,結果flase
console.log(100 && false);//第一個操作數是100,結果flase
console.log(undefined && false);//第一個操作數是undefined,結果undefined
console.log(NaN && false);//第一個操作數是NaN,結果NaN
console.log(null && false);//第一個操作數是null,結果null
console.log('' && false);//第一個操作數是空串,結果空串
console.log(0 && 100);//結果是0
console.log(5 && 100);//100
console.log(a && b);//hello
console.log(obj && 200);//200
</script>

3. 邏輯或 ||

如果第一個操作數不是false,結果就是第一個操作數,否則結果是第二個操作數。如果第一個操作數能夠轉為true,結果就是第一個操作數

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true || 10);//第一個操作數是true,結果是第一個操作,也就是true
console.log(false || b);//第一個操作數是false,結果是第二個操作數b
console.log(100 || false);//第一個操作數是100,結果100
console.log(undefined || 9);//第一個操作數是undefined轉false,結果9
console.log(NaN || false);//第一個操作數是NaN轉false,結果第二個操作數
console.log(null || a);//第一個操作數是null轉false,結果a
console.log('' || false);//第一個操作數是空串轉false,結果第二操作數
console.log(0 || 100);//結果是100
console.log(5 || 100);//5
console.log(a || b);//a
console.log(obj || 200);//obj
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM