前面的話
邏輯#運算子對運算元進行布林運算,常常和關係運算子一樣配合使用。邏輯運算子將多個關係表達式組合起來組成一個更複雜的表達式。邏輯運算子分為邏輯非'!'、邏輯與'&&'、邏輯或'||'3種,本文將介紹這三種邏輯運算子
邏輯非
#邏輯非運算元由嘆號(!)表示,可以套用於ECMAScript中的任何值。無論這個值是什麼資料型別,這個運算子都會傳回一個布林值。邏輯非運算子首先會將它的運算元轉換成一個布林值,然後再對其求反
邏輯非對運算元轉為布林型別的轉換型別與Boolean()轉型函數相同,只不過最後再將結果取反。而如果同時使用兩個邏輯非運算符,實際上就會模擬Boolean()轉型函數的行為
console.log(!!undefined);//false console.log(!!null);//false console.log(!!0);//false console.log(!!-0);//false console.log(!!NaN);//false console.log(!!'');//false console.log(!!false);//false
console.log(!!{});//true console.log(!![]);//true console.log(!!new Boolean(false));//true console.log(!!false);//false console.log(!!new Boolean(null));//true console.log(!!null);//false
//Boolean 变量(bFound)用于记录检索是否成功。找到问题中的数据项时,bFound 将被设置为true,!bFound将等于false,意味着运行将跳出while循环 var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } else { i++; } }
#邏輯與
邏輯與運算子由兩個和號(&&)表示,有兩個運算元,只有在兩個運算元都為true時,結果才會回傳true,否則傳回false
//逻辑与(&&)的真值表 第一个操作数 第二个操作数 结果 true true true true false false false true false false false alse
邏輯與運算可以套用到任何類型的操作數,而不僅僅是布林值。如果其中一個運算元不是布林值,邏輯與運算不一定會傳回布林值
邏輯與運算屬於短路操作,如果第一個運算元能夠決定結果,那麼就不會再對第二個操作數求值
對於邏輯與而言,如果第一個操作數是false,則無論第二個操作數是什麼值,結果都是false,則傳回第一個操作數;如果第一個運算元為true,則結果的真假和第二個運算元的真假相同,則傳回第二個運算元
//除了false、undefined、null、+0、-0、NaN、''这7个假值,其余都是真值 console.log('t' && ''); //因为't'是真值,所以返回'' console.log('t' && 'f'); //因为't'是真值,所以返回'f' console.log('t' && 1 + 2); //因为't'是真值,所以返回3 console.log('' && 'f'); //因为''是假值,所以返回'' console.log('' && ''); //因为''是假值,所以返回''
var i = 1; var result = (true && i++); console.log(result,i);//因为true是真值,所以执行i++,i是2,result是1 var i = 1; var result = (false && i++); console.log(result,i);//因为false是假值,所以不执行i++,i是1,result是false
邏輯與運算子可以多個連用,傳回第一個布林值為false的表達式的值
console.log(true && 'foo' && '' && 4 && 'foo' && true);// ''
關係運算子的優先權比邏輯與(&&)和邏輯或(||)的優先權高,所以類似表達式可以直接書寫,不用補充圓括號
if(a+1==2 && b+2==3){ //Todo }
可以使用邏輯與運算子來取代if結構
if (a == b) { doSomething(); } // 等价于 (a == b) && doSomething();
邏輯與運算子常用於回呼函數使用中
//若没有给参数a传值,则a为默认的undefined,是假值,所以不执行a(),防止报错,如果给参数a传值,则执行函数a() function fn(a){ if(a){ a(); } } //等价于 function fn(a){ a && a(); }
邏輯或
##邏輯或運算子由兩個垂直線(||)表示,有兩個運算元,只有在兩個運算元都是false時,結果才會回傳false,否則傳回true
//逻辑或(||)的真值表 第一个操作数 第二个操作数 结果 true true true true false true false true true false false false同樣地,邏輯或操作也可以應用於任何類型的操作數,而不僅僅是布林值。如果其中一個運算元不是布林值,邏輯或運算不一定會傳回布林值邏輯或運算也屬於短路運算,如果第一個運算元能夠決定結果,那麼就不會再對第二個操作數求值
對於邏輯或而言,如果第一個操作數是true,則無論第二個操作數是什麼值,結果都是true,則傳回第一個操作數;如果第一個運算元是fales,則結果的真假和第二個運算元的真假相同,則傳回第二個運算元
console.log('t' || '');//因为't'是真值,所以返回"t" console.log('t' || 'f');//因为't'是真值,所以返回"t" console.log('' || 'f');//因为''是假值,所以返回"f" console.log('' || '');//因为''是假值,所以返回""
##
var i = 1; var result = (true || i++); console.log(result,i);//因为true是真值,所以不执行i++,result是true,i是1 var i = 1; var result = (false || i++); console.log(result,i);//因为false是假值,所以执行i++,i是2,result是1
同樣地,邏輯或運算子也可以多個連用,傳回第一個布林值為true的運算式的值
console.log(false || 0 || '' || 4 || 'foo' || true);// 4
邏輯或運算子常用於為變數設定預設值
//如果没有向参数p传入任何对象,则将该参数默认设置为空对象 function fn(p){ p = p || {}; }

#
以上是全面了解javascript運算符之邏輯運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器