JavaScript中邏輯運算符

1、JavaScript「邏輯」運算符

不少學習 JavaScript的人,容易被 JavaScript 的邏輯運算符的運算規則搞暈。爲何呢?由於
JavaScript的邏輯運算符和其餘語言(好比:java、c#、c等)有着很大的不一樣。其餘那些強類型的語言的
邏輯運算符參數運算的都是true或false,結果也必定是true或false,很容器理解和記住。而JavaScript
的"邏輯運算符"參與運算的能夠是任意類型,結果也多是任意類型,規則及其複雜。因此,JavaScript中,
他們已經不是真正的"邏輯運算符"了,因此我纔給他們打上引號。

2、JavaScript中的邏輯運算符

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

1. 取反 ! 
首先把數據轉化爲布爾值,而後取反,結果爲true或falsejava

<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(短路計算),對於一些特殊數值不遵循以上規則.c#

<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,結果就是第一個操做數spa

<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>
相關文章
相關標籤/搜索