最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript?邏輯且(&&)和邏輯或(||)的運(yùn)用小結(jié)

 更新時(shí)間:2022年09月05日 11:45:17   作者:Enziandom  
這篇文章主要介紹了JavaScript?邏輯且(&&)和邏輯或(||)的妙用?,通過(guò)實(shí)例代碼介紹了邏輯且(&&)和邏輯或(||)的詳細(xì)用法,需要的朋友可以參考下

簡(jiǎn)單運(yùn)用

邏輯且(&&):左右必須都滿足 true 才返回 true;邏輯或(||):左右其中一個(gè)滿足 true 就返回 true。

這樣簡(jiǎn)單的運(yùn)用是整體返回一個(gè)布爾值,適合在語(yǔ)句判斷的時(shí)候用:

let user = localStorage.getItem("user");

if (user && user.age > 10) {
  // ...
}

當(dāng) user 存在時(shí)(即 true),且 user 的 age 字段大于 10,if語(yǔ)句得到的布爾值才是 true,第一個(gè)條件句才執(zhí)行。

進(jìn)階運(yùn)用

上面都是邏輯且和邏輯或的簡(jiǎn)單使用,其實(shí)它們大有用處,還能簡(jiǎn)化代碼。運(yùn)算符操作的對(duì)象稱之為操作數(shù)(Operand)。

邏輯且

左邊操作數(shù)結(jié)果右邊操作數(shù)結(jié)果執(zhí)行的操作數(shù)整體結(jié)果
truetruetrue
falsetruefalse
truefalsefalse
falsefalsefalse

根據(jù)上表格得出一個(gè)結(jié)論:

  • 如果左操作數(shù)的結(jié)果是一個(gè) true,就執(zhí)行右操作數(shù)。
  • 如果左操作數(shù)的結(jié)果是一個(gè) false,就執(zhí)行左操作數(shù)。

假設(shè)傳入了回調(diào)函數(shù)就執(zhí)行,否則跳過(guò)不執(zhí)行。一般想到的是用 if 條件語(yǔ)句,或者三元運(yùn)算符簡(jiǎn)化 if 條件語(yǔ)句。然而,利用邏輯且(&&)的特性可以進(jìn)一步簡(jiǎn)化代碼:

function fun(callback) {
  // ...
  callback && callback();
}

fun(() => console.log("execute callback function.")); // 控制臺(tái)打印了字符串!
fun(); // 什么也沒(méi)有發(fā)生!

邏輯或

左邊操作數(shù)結(jié)果右邊操作數(shù)結(jié)果執(zhí)行的操作數(shù)整體結(jié)果
truetruetrue
falsetruetrue
truefalsetrue
falsefalsefalse

根據(jù)上表得出結(jié)論:

  • 如果左操作數(shù)的結(jié)果是一個(gè) true,就執(zhí)行左操作數(shù)。
  • 如果左操作數(shù)的結(jié)果是一個(gè) false,就執(zhí)行右操作數(shù)。

簡(jiǎn)而言之,邏輯或(||)一旦遇到操作數(shù)的結(jié)果是 true,就執(zhí)行這個(gè)操作數(shù),而另一個(gè)操作數(shù)直接忽略不執(zhí)行,即“短路”。

邏輯且提供默認(rèn)值

if 語(yǔ)句提供默認(rèn)值:

function fun(x) {
  if (!x) {
    x = "default value";
  }
  console.log(x);
}

fun(undefined); // "default value"
fun("inject a value"); // inject a value

邏輯且提供默認(rèn)值:

function fun(x) {
  x = !x && "default value";
  console.log(x);
}

fun(undefined); // "default value"
fun("inject a value"); // false

邏輯且要判斷第一個(gè)操作數(shù)(左操作數(shù))是不是 false,如果是就直接執(zhí)行第一個(gè)操作數(shù)。我本來(lái)就有默認(rèn)值要提供,但第一個(gè)操作數(shù)就已經(jīng)截?cái)嗔说诙€(gè)操作數(shù)的執(zhí)行。上面的代碼,為了保證參數(shù)提供的是假值而執(zhí)行第二個(gè)操作數(shù)的結(jié)果,導(dǎo)致傳入非假值返回的是 false。

可能是我沒(méi)有想到更好的方式,所以,我認(rèn)為邏輯且(&&)不適合用來(lái)提供默認(rèn)值。

邏輯或提供默認(rèn)值

實(shí)際上邏輯或提供默認(rèn)值才是等價(jià)于上面說(shuō)到的 if 語(yǔ)句提供默認(rèn)值的邏輯:

function fun(x) {
  x = x || "default value";
  console.log(x);
}
fun(undefined); // "default value"
fun("inject a value"); // inject a value

所以,我認(rèn)為邏輯或(||)適合提供默認(rèn)值這一工作。

比較兩者

邏輯或(||)的用處比邏輯且的用途廣。前面說(shuō)到,邏輯且(&&)不適合提供默認(rèn)值,而邏輯或(||)既適合提供默認(rèn)值,也適合做決定是否執(zhí)行回調(diào)函數(shù)等一些列工作。

改造進(jìn)階運(yùn)用 - 邏輯且的例子代碼:

function fun(callback) {
  // ...
  !callback || callback();
}

fun(() => console.log("execute callback function.")); // 控制臺(tái)打印了字符串!
fun(); // 什么也沒(méi)有發(fā)生!

更多邏輯或的例子

屬性的默認(rèn)值

setTitle(options.title || 'untitled');

在給函數(shù)傳遞參數(shù)時(shí),如果 options.title 是 null 或者其他之類(lèi)的假值,就提供字符串untitled給函數(shù)。

函數(shù)結(jié)果的默認(rèn)值

function countOccurrences(regex, str) {
  return (str.match(regex) || []).length;
}

match()方法會(huì)返回一個(gè)數(shù)組或 null。得益于邏輯或(||),在后一種請(qǐng)看下可以設(shè)置一個(gè)默認(rèn)值。因此,在這兩種情況下你都可以安全地訪問(wèn) length 屬性。

到此這篇關(guān)于JavaScript 邏輯且(&&)和邏輯或(||)的妙用的文章就介紹到這了,更多相關(guān)JavaScript 邏輯且(&&)和邏輯或(||)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • layer彈窗插件操作方法詳解

    layer彈窗插件操作方法詳解

    這篇文章主要介紹了layer彈窗插件操作方法,結(jié)合實(shí)例形式詳細(xì)分析了layer彈窗插件的下載、調(diào)用、設(shè)置等具體步驟與操作技巧,需要的朋友可以參考下
    2017-05-05
  • webpack cjs運(yùn)行時(shí)分析示例詳解

    webpack cjs運(yùn)行時(shí)分析示例詳解

    這篇文章主要介紹了webpack cjs運(yùn)行時(shí)分析,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 原生js實(shí)現(xiàn)日期聯(lián)動(dòng)

    原生js實(shí)現(xiàn)日期聯(lián)動(dòng)

    日期聯(lián)動(dòng)算是一個(gè)比較常見(jiàn)的功能了,隨便度娘一下,你就能找到N多代碼,今天給大家介紹的是個(gè)人比較常用,代碼很簡(jiǎn)潔,高效,這里推擠給大家。
    2015-01-01
  • javascript document.referrer 用法

    javascript document.referrer 用法

    document對(duì)象的referrer屬性,返回導(dǎo)航到當(dāng)前網(wǎng)頁(yè)的超鏈接所在網(wǎng)頁(yè)的URL。
    2009-04-04
  • JS使用單鏈表統(tǒng)計(jì)英語(yǔ)單詞出現(xiàn)次數(shù)

    JS使用單鏈表統(tǒng)計(jì)英語(yǔ)單詞出現(xiàn)次數(shù)

    這篇文章主要為大家詳細(xì)介紹了JS使用單鏈表統(tǒng)計(jì)英語(yǔ)單詞出現(xiàn)次數(shù)的相關(guān)資料,列出所有單詞及其出現(xiàn)次數(shù),感興趣的小伙伴們可以參考一下
    2016-06-06
  • Vue考試系統(tǒng)的后臺(tái)管理功能開(kāi)發(fā)示例解讀

    Vue考試系統(tǒng)的后臺(tái)管理功能開(kāi)發(fā)示例解讀

    這篇文章主要介紹了Vue考試系統(tǒng)后臺(tái)管理項(xiàng)目的登錄、記住密碼功能具體實(shí)現(xiàn)流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • 輕松掌握J(rèn)avaScript享元模式

    輕松掌握J(rèn)avaScript享元模式

    這篇文章主要幫助大家輕松掌握J(rèn)avaScript享元模式,告訴大家想什么是js享元模式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 詳解uniapp頁(yè)面跳轉(zhuǎn)URL傳參大坑

    詳解uniapp頁(yè)面跳轉(zhuǎn)URL傳參大坑

    本文主要介紹了詳解uniapp頁(yè)面跳轉(zhuǎn)URL傳參大坑,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • javascript靜態(tài)頁(yè)面?zhèn)髦档娜N方法分享

    javascript靜態(tài)頁(yè)面?zhèn)髦档娜N方法分享

    這篇文章介紹了javascript靜態(tài)頁(yè)面?zhèn)髦档娜N方法及優(yōu)缺點(diǎn),有需要的朋友可以參考一下
    2013-11-11
  • 詳解原生js實(shí)現(xiàn)offset方法

    詳解原生js實(shí)現(xiàn)offset方法

    本篇文章主要介紹了原生js實(shí)現(xiàn)offset方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06

最新評(píng)論

酒泉市| 兰溪市| 静海县| 舟曲县| 且末县| 烟台市| 岳阳市| 遂川县| 那曲县| 白河县| 沈阳市| 广宁县| 鄄城县| 吉安县| 象山县| 白城市| 屏边| 临海市| 京山县| 亳州市| 社旗县| 桂平市| 平顺县| 四平市| 个旧市| 法库县| 富蕴县| 龙江县| 崇礼县| 邵东县| 聂荣县| 岐山县| 渝北区| 民勤县| 汤原县| 玉龙| 和平区| 新宾| 云南省| 启东市| 遂平县|