日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

分享幾個JavaScript運算符的使用技巧

瀏覽:138日期:2023-10-03 08:17:20

ECMAScript發(fā)展進(jìn)程中,會有很多功能的更新,比如銷毀,箭頭功能,模塊,它們極大的改變JavaScript編寫方式,可能有些人喜歡,有些人不喜歡,但像每個新功能一樣,我們最終會習(xí)慣它們。新版本的ECMAScript引入了三個新的邏輯賦值運算符:空運算符,AND和OR運算符,這些運算符的出現(xiàn),也是希望讓我們的代碼更干凈簡潔,下面分享幾個優(yōu)雅的JavaScript運算符使用技巧

一、可選鏈接運算符【?.】

可選鏈接運算符(Optional Chaining Operator) 處于ES2020提案的第4階段,因此應(yīng)將其添加到規(guī)范中。它改變了訪問對象內(nèi)部屬性的方式,尤其是深層嵌套的屬性。它也可以作為TypeScript 3.7+中的功能使用。

相信大部分開發(fā)前端的的小伙伴們都會遇到null和未定義的屬性。JS語言的動態(tài)特性使其無法不碰到它們。特別是在處理嵌套對象時,以下代碼很常見:

if (data && data.children && data.children[0] && data.children[0].title) { // I have a title!}

上面的代碼用于API響應(yīng),我必須解析JSON以確保名稱存在。但是,當(dāng)對象具有可選屬性或某些配置對象具有某些值的動態(tài)映射時,可能會遇到類似情況,需要檢查很多邊界條件。

這時候,如果我們使用可選鏈接運算符,一切就變得更加輕松了。它為我們檢查嵌套屬性,而不必顯式搜索梯形圖。我們所要做的就是使用“?” 要檢查空值的屬性之后的運算符。我們可以隨意在表達(dá)式中多次使用該運算符,并且如果未定義任何項,它將盡早返回。

對于靜態(tài)屬性用法是:

object?.property

對于動態(tài)屬性將其更改為:

object?.[expression]

上面的代碼可以簡化為:

let title = data?.children?.[0]?.title;

然后,如果我們有:

let data;console.log(data?.children?.[0]?.title) // undefineddata = {children: [{title:’codercao’}]}console.log(data?.children?.[0]?.title) // codercao

這樣寫是不是更加簡單了呢? 由于操作符一旦為空值就會終止,因此也可以使用它來有條件地調(diào)用方法或應(yīng)用條件邏輯

const conditionalProperty = null;let index = 0;console.log(conditionalProperty?.[index++]); // undefinedconsole.log(index); // 0

對于方法的調(diào)用你可以這樣寫

object.runsOnlyIfMethodExists?.()

例如下面的parent對象,如果我們直接調(diào)用parent.getTitle(),則會報Uncaught TypeError: parent.getTitle is not a function錯誤,parent.getTitle?.()則會終止不會執(zhí)行

let parent = { name: 'parent', friends: ['p1', 'p2', 'p3'], getName: function() { console.log(this.name) } }; parent.getName?.() // parent parent.getTitle?.() //不會執(zhí)行

與無效合并一起使用

提供了一種方法來處理未定義或為空值和表達(dá)提供默認(rèn)值。我們可以使用??運算符,為表達(dá)式提供默認(rèn)值

console.log(undefined ?? ’codercao’); // codercao

因此,如果屬性不存在,則可以將無效的合并運算符與可選鏈接運算符結(jié)合使用以提供默認(rèn)值。

let title = data?.children?.[0]?.title ?? ’codercao’;console.log(title); // codercao二、邏輯空分配(?? =)

expr1 ??= expr2

邏輯空值運算符僅在空值(空值或未定義)時才將值分配給expr1,表達(dá)方式:

x ??= y

可能看起來等效于:

x = x ?? y;

但事實并非如此!有細(xì)微的差別。

空的合并運算符(??)從左到右操作,如果x不為空,則短路。因此,如果x不為null或未定義,則永遠(yuǎn)不會對表達(dá)式y(tǒng)進(jìn)行求值。因此,如果y是一個函數(shù),它將根本不會被調(diào)用。因此,此邏輯賦值運算符等效于

x ?? (x = y);三、邏輯或分配(|| =)

此邏輯賦值運算符僅在左側(cè)表達(dá)式為 falsy值時才賦值。Falsy與null有所不同,因為falsy可以是任何一種值:false,0,“”,null,undefined和NaN等

語法

x ||= y

等同于

x || (x = y)

在我們想要保留現(xiàn)有值(如果不存在)的情況下,這很有用,否則我們想為其分配默認(rèn)值。例如,如果搜索請求中沒有數(shù)據(jù),我們希望將元素的內(nèi)部HTML設(shè)置為默認(rèn)值。否則,我們要顯示現(xiàn)有列表。這樣,我們避免了不必要的更新和任何副作用,例如解析,重新渲染,失去焦點等。我們可以簡單地使用此運算符來使用JavaScript更新HTML:

document.getElementById(’search’).innerHTML ||= ’<i>No posts found matching this search.</i>’四、邏輯與分配(&& =)

可能你已經(jīng)猜到了,此邏輯賦值運算符僅在左側(cè)為真時才賦值。因此:

x &&= y

等同于

x && (x = y)最后

本次分享幾個優(yōu)雅的JavaScript運算符使用技巧,重點分享了可選鏈接運算符的使用,這樣可以讓我們不需要再編寫大量我們例子中代碼即可輕松訪問嵌套屬性。但是IE不支持它,因此,如果需要支持該版本或更舊版本的瀏覽器,則可能需要添加Babel插件。對于Node.js,需要為此升級到Node 14 LTS版本,因為12.x不支持該版本。

如果你也有優(yōu)雅的優(yōu)雅的JavaScript運算符使用技巧,請不要吝惜,在評論區(qū)一起交流~

以上就是分享幾個JavaScript運算符的使用技巧的詳細(xì)內(nèi)容,更多關(guān)于JavaScript運算符的使用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黄色亚洲在线| 亚洲+小说+欧美+激情+另类| 福利一区二区三区视频在线观看| 久久一区视频| 国产精品99精品一区二区三区∴| 成人免费电影网址| 视频一区免费在线观看| 日韩在线黄色| 亚洲欧美日韩在线观看a三区| 国产精品xx| 欧美一级二级三级视频| 国产传媒av在线| av亚洲在线观看| 麻豆精品在线观看| 国产精品视频首页| 亚洲综合欧美| 久久精品欧美一区| 婷婷五月色综合香五月| 樱桃视频成人在线观看| 国内揄拍国内精品久久| 欧美视频精品全部免费观看| 99精品美女| 免费视频一区二区三区在线观看 | 国产一区二区精品福利地址| 一区在线免费| 日韩网站中文字幕| 欧美国产免费| 亚洲国产影院| 亚洲精品九九| 尤物在线精品| 国产精品91一区二区三区| 卡一卡二国产精品| 久久久久午夜电影| 久久电影tv| 久久不见久久见免费视频7| 五月天综合网站| 黑人精品一区| 日韩一区精品视频| 亚洲激情国产| 在线视频观看日韩| 免费欧美日韩| 狂野欧美性猛交xxxx| 免费在线观看一区| 日韩黄色av| 国产欧美综合一区二区三区| 91大神在线观看线路一区| 97人人精品| 激情五月色综合国产精品| 国产一区2区| а√在线中文在线新版| 免费看日韩精品| 日韩精品欧美激情一区二区| 国产精区一区二区| 精品一区91| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产精品一区高清| 婷婷亚洲五月色综合| 成人国产精选| 国产精品一区二区三区www | 日韩高清不卡在线| 麻豆国产精品视频| 欧美特黄一级| 欧美视频一区| 亚洲免费网址| 国产在线观看www| 日韩1区2区3区| 美女视频黄 久久| 日本国产欧美| 日韩精品免费一区二区三区| 精品成人18| 欧产日产国产精品视频| 久久国产欧美日韩精品| 日韩精品a在线观看91| 国产精品美女久久久| 国产传媒在线| 亚洲神马久久| 鲁鲁在线中文| 国产精品sss在线观看av| 亚洲视频www| 1024精品久久久久久久久| 久久九九精品| 蜜臀久久99精品久久一区二区| 999精品一区| 国产亚洲精品美女久久| 久久久久久美女精品| 国产欧美一区二区精品久久久| 久久久久久免费视频| 麻豆91在线播放| 国产乱子精品一区二区在线观看 | 久久激情综合网| 青青青国产精品| 福利一区在线| 91免费精品| 美女在线视频一区| 亚洲免费专区| 亚洲一区二区小说| 在线亚洲自拍| 国产精品毛片在线看| 亚洲激情二区| 视频一区中文字幕| 久久精品99久久久| 国产亚洲欧美日韩精品一区二区三区 | 日本麻豆一区二区三区视频| 精品久久免费| 日本不卡免费高清视频在线| 精品久久一区| 久久麻豆精品| 91精品国产调教在线观看| 蜜臀av免费一区二区三区| 久久av在线| 精品一区av| 亚洲精品在线a| 日韩精品国产精品| 日产欧产美韩系列久久99| 日本视频中文字幕一区二区三区| 日本不卡一区二区| 欧美私人啪啪vps| 福利一区二区三区视频在线观看| 亚洲欧洲另类| 日韩av一二三| 亚洲一区二区免费看| 在线中文字幕播放| 成人三级高清视频在线看| 免费视频国产一区| 日韩精品乱码av一区二区| 三级在线看中文字幕完整版| 香蕉久久夜色精品国产| 黑森林国产精品av| 五月激激激综合网色播| 久久99久久人婷婷精品综合| 日韩精品2区| 国产免费久久| 国产v综合v| 国产欧美日韩在线观看视频| 热三久草你在线| 国产亚洲电影| 久久一区二区三区喷水| 国产精品亚洲四区在线观看| 一区二区三区国产盗摄| av资源新版天堂在线| 日韩欧美精品一区二区综合视频| 国产a亚洲精品| 日韩激情一区二区| 亚洲精品影视| 亚洲在线网站| 99国产成+人+综合+亚洲欧美| 亚洲深深色噜噜狠狠爱网站 | 日韩国产专区| 91亚洲成人| 国产精品一区二区免费福利视频| 日韩精品一区第一页| 日本欧美不卡| 午夜国产精品视频| 欧美日韩少妇| 免费中文字幕日韩欧美| 欧美日韩一区二区三区视频播放| 麻豆国产一区| 国产欧美三级| 亚洲免费资源| 蜜桃av一区二区在线观看| 亚州av乱码久久精品蜜桃| 亚洲欧美日韩在线观看a三区| 成人久久一区| 国产精品高潮呻吟久久久久| 91成人福利| 91精品国产经典在线观看| 亚洲三级视频| 亚洲久久视频| 91精品国产一区二区在线观看| 国产精品3区| 亚洲精品99| 亚洲一二三区视频| 日韩av网站在线免费观看| 久久99影视| 久久一二三区| 亚洲三级国产| 日本午夜免费一区二区| 亚洲日产国产精品| 久久香蕉精品香蕉| 丝袜美腿亚洲色图| 日韩成人午夜精品| 国产精品分类| 日韩精品午夜| 日韩一区二区三区高清在线观看| 91一区二区| 久久久久蜜桃| 青青草国产精品亚洲专区无| 精品捆绑调教一区二区三区| 国产精品毛片视频| 欧美特黄一级| 美女91精品| 久久久久久久久成人| 亚洲欧美日韩视频二区| 日韩欧美美女在线观看| 中文精品视频| 国产伦乱精品| 国产99精品| 国产一区二区三区黄网站 | 模特精品在线| 国产精品激情电影|