成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:110日期: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)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
九色|91porny| 永久91嫩草亚洲精品人人| 欧美精品日韩| 欧美一级欧美三级| 国产在线播放一区三区四| 一本一道综合狠狠老| 一区二区三区精品| 禁久久精品乱码| 国产精品久久久久影院老司| 99热99精品| 久久欧美一区二区| 99久久99久久精品免费看蜜桃| 在线播放视频一区| 国产一区二区电影| 4438x成人网最大色成网站| 蜜臀av国产精品久久久久| 色偷偷一区二区三区| 天堂一区二区在线免费观看| 久久久久久久欧美精品| 日韩精品一二三| 欧洲精品中文字幕| 久久99精品久久久久久动态图| 日本精品视频一区二区| 美腿丝袜亚洲色图| 欧洲精品一区二区| 精品亚洲成a人在线观看| 欧美亚洲一区二区在线| 日韩高清不卡一区二区三区| 奶水喷射视频一区| 日日夜夜免费精品| 久久免费高清| 免费在线看成人av| 欧美日韩国产片| 国产精品一二三四| 日韩欧美成人午夜| 色综合一个色综合| 中文字幕一区二区三区精华液| 亚洲精品一区二区三区av| 樱桃视频在线观看一区| 亚洲一区二区三区午夜| 免费在线视频一区| 欧美二区乱c少妇| 国产精品一二三在| 日韩欧美另类在线| 欧美国产三区| 亚洲视频一区二区在线观看| 国产精品久久久久久久久久妞妞| 午夜视频在线观看一区二区三区| 色香蕉成人二区免费| 韩国三级电影一区二区| 日韩欧美亚洲国产精品字幕久久久| kk眼镜猥琐国模调教系列一区二区| 国产视频亚洲色图| 激情欧美国产欧美| 五月激情综合婷婷| 欧美日韩精品综合在线| 成人激情图片网| 国产精品视频yy9299一区| 99国产精品私拍| 日本女优在线视频一区二区| 日韩一区二区在线观看视频| 91免费看`日韩一区二区| 亚洲日本电影在线| 色狠狠一区二区| 国产高清不卡一区二区| 国产欧美一区二区三区在线看蜜臀| 亚洲欧洲一二三| 捆绑调教美女网站视频一区| 欧美大片在线观看一区二区| 伊人蜜桃色噜噜激情综合| 日韩电影免费在线看| 日韩欧美黄色影院| 亚洲精品字幕| 国产一区二区三区黄视频| 国产亚洲成年网址在线观看| 亚洲尤物在线| 国产剧情av麻豆香蕉精品| 亚洲国产高清在线观看视频| 免费视频一区| 国产精选一区二区三区| 亚洲图片激情小说| 欧美性色aⅴ视频一区日韩精品| caoporn国产一区二区| 一区二区在线免费| 91精品国产综合久久久久久| 国内精品亚洲| 日韩成人dvd| 久久亚洲精品国产精品紫薇| 欧美一区=区| 成熟亚洲日本毛茸茸凸凹| 亚洲美女免费在线| 日韩亚洲欧美在线| 国产一级精品aaaaa看| 国产suv一区二区三区88区| 依依成人综合视频| 精品美女在线播放| 男人的天堂成人在线| caoporn国产一区二区| 亚洲大片在线观看| 久久综合九色综合欧美就去吻| 国产欧美日韩综合一区在线观看 | 亚洲成av人片一区二区三区 | 精品国产sm最大网站| 国产一区二区你懂的| 成人免费视频视频| 亚洲大片精品永久免费| 26uuu成人网一区二区三区| 久久国产精品高清| 97se亚洲国产综合自在线| 午夜一区二区三区在线观看| 久久精品亚洲精品国产欧美| 91精品福利在线| 亚洲视频久久| 国产高清亚洲一区| 图片区小说区区亚洲影院| 国产欧美一区视频| 4438x亚洲最大成人网| 国产精品久久亚洲7777| av一区二区三区黑人| 日产精品久久久久久久性色| 国产精品久久久久久福利一牛影视 | 午夜伊人狠狠久久| 国产精品免费免费| 欧美一级在线免费| 一本一道久久a久久精品| 韩国欧美一区| 成人精品免费视频| 免费三级欧美电影| 一区二区欧美国产| 久久精品水蜜桃av综合天堂| 欧美日韩视频在线观看一区二区三区 | 一区二区三区四区在线免费观看 | 一区一区视频| av电影在线观看不卡| 狠狠色丁香久久婷婷综合丁香| 亚洲国产精品久久一线不卡| 中文字幕av不卡| 日韩午夜在线播放| 欧美日韩一区高清| 国产伦精品一区二区三区四区免费| 欧美久久久久久| 成人激情小说乱人伦| 久久国产剧场电影| 五月婷婷另类国产| 一区二区三区在线视频观看58| 国产三级精品视频| 精品国产一区二区三区不卡 | 国产一区在线观看视频| 日韩国产欧美三级| 一区二区三区高清| 中文字幕在线观看一区| 久久久精品国产免费观看同学| 欧美一激情一区二区三区| 欧美系列亚洲系列| 久久免费国产| 老鸭窝毛片一区二区三区| 国产精品日韩欧美一区| 一级成人国产| 一区二区国产日产| 一区二区日韩免费看| 亚洲成人自拍视频| 欧美日韩蜜桃| 亚洲欧美综合| 91蝌蚪国产九色| jizzjizzjizz欧美| www.激情成人| 波多野结衣中文字幕一区| 粉嫩aⅴ一区二区三区四区五区| 国产一区二区伦理| 国产一区二区三区黄视频 | 午夜欧美在线一二页| 亚洲国产日韩a在线播放性色| 一区二区三区中文在线| 亚洲欧美日韩小说| 最新中文字幕一区二区三区| 国产精品美女视频| 中文字幕欧美区| 中文字幕精品一区| 国产精品久久久久久福利一牛影视 | 久久av二区| 久久亚洲影院| 色婷婷综合久久久| 在线精品视频免费播放| 欧美又粗又大又爽| 色网站国产精品| 欧美性大战xxxxx久久久| 欧美日韩精品一区二区三区蜜桃| 欧美日韩高清一区二区不卡| 在线成人免费视频| 精品区一区二区| 久久久久久99精品| 国产欧美日韩卡一| ...av二区三区久久精品| 亚洲精品videosex极品| 亚洲高清视频中文字幕| 日本91福利区| 国产精品一卡二| 91丨porny丨中文| 欧美日韩三区| 国产亚洲精品久久飘花|