天天看點

JavaScript中邏輯運算符

很多學習 JavaScript的人,容易被 JavaScript 的邏輯運算符的運算規則搞暈。為什麼呢?因為
JavaScript的邏輯運算符和其他語言(比如:java、c#、c等)有着很大的不同。
           

javascript中的邏輯運算符

首先說一下,其他資料類型轉換為布爾類型的規則:

null、undefined、0、NaN、空字元串轉換為false,其他轉化為true。

javascript中有三種邏輯運算符:

1.取反 !

首先把資料轉化為布爾值,然後取反,結果為true或false

<script type="text/javascript">
	var str="hello world"
	console.log(!null);//true
	console.log(!str);//false
 </script>
           

2.邏輯與 &&

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

<script type="text/javascript">
		var str="hello world";
        var str1="";
        var a;
        var nll=null;
        var obj=new Object();
        console.log(true&&nll);
        console.log(false&&nll);
        console.log(nll&&true);//null  -->第一個操作數為特殊數值,則結果為特殊數值
        console.log(nll&&false);//null -->同上
        console.log(str1&&true);//結果為空串
        console.log(a&&true);//undefined
        console.log(true&&str);//hello world
</script>
           
  1. 邏輯或 ||

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

<script type="text/javascript">
		var str="hello world";
        var str1="";
        var a;
        var nll=null;
        var obj=new Object();
        console.log(str||true);//hello world
        console.log(false||str);//hello world
        console.log(nll||false);//flase
        console.log(false||nll);//null
        console.log(obj||false);//{}
        console.log(str1||false);//false
        console.log(a||false);//false
        console.log(false||a);//undefined
        console.log(false||0);//false
        console.log(0||true);//ture
        console.log(NaN||true);//true
        console.log(false||NaN);//false
</script>