国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

4個很多人都不知道的現(xiàn)代JavaScript技巧

這篇具有很好參考價值的文章主要介紹了4個很多人都不知道的現(xiàn)代JavaScript技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

JavaScript在不斷的進(jìn)化和升級,越來越多的新特性讓我們的代碼變得更加簡潔。因此,今天這篇文章,我將跟大家分享 4 個不常用的 JavaScript 運(yùn)算符。讓我們一起研究它們。

1.可選的鏈接運(yùn)算符

這個功能非常好用,它可以防止我的代碼出錯,甚至可以大大簡化它。

例如,我們想打印一個人的名字,我敢打賭這很容易!沒有困難。

const?showName?=?(data)?=>?{
??console.log(data.user.name)
}

showName({
??user:?{
????name:?'fatfish'
??}
})

4個很多人都不知道的現(xiàn)代JavaScript技巧

不幸的是,我太粗心了,沒有按照showName的要求傳合法的參數(shù),結(jié)果出事了。

const?showName?=?(data)?=>?{
??console.log(data.user.name)
}

showName('fatfish')

4個很多人都不知道的現(xiàn)代JavaScript技巧

你一定是一個有經(jīng)驗(yàn)的軟件工程師,所以很容易寫出像下面這樣的代碼。

const?showName?=?(data)?=>?{
??console.log(data?&&?data.user?&&?data.user.name)
}

showName('fatfish')

4個很多人都不知道的現(xiàn)代JavaScript技巧

有沒有更優(yōu)雅的方式?如果數(shù)據(jù)層級嵌套太深,就是一段臭代碼。

const?showName?=?(data)?=>?{
??console.log(data?&&?data.user?&&?data.user.person?...)
}

showName('fatfish')

別擔(dān)心,Optional Chaining Operator 可以幫助我們。下面的代碼不再拋出錯誤,這很棒。

const?showName?=?(data)?=>?{
??console.log(data?.user?.name)
}

showName('fatfish')

4個很多人都不知道的現(xiàn)代JavaScript技巧

什么是可選鏈接運(yùn)算符?

來自 mdn的解釋:可選的鏈接運(yùn)算符 (?.) 訪問對象的屬性或調(diào)用函數(shù)。如果對象是 undefined 或 null,它返回 undefined 而不是拋出錯誤。

const?adventurer?=?{
??name:?'Alice',
??cat:?{
????name:?'Dinah'
??}
}

const?dogName?=?adventurer?.dog?.name

console.log(dogName)
//?expected?output:?undefined
console.log(adventurer.someNonExistentMethod?.())
//?expected?output:?undefined

2.合并賦值 (??=)

來自mdn的解釋:空值合并賦值 (x ??= y) 運(yùn)算符僅在 x 為空值(null 或未定義)時才賦值。

const?obj?=?{
??name:?'fatfish'
}

obj.name???=?'medium'
obj.age???=?100
console.log(obj.name,?obj.age)

是的,最后只分配了 age 屬性。

小伙伴們,你們覺得哪一行代碼更接近??=?的功能呢?答案1還是答案2?

//?1.
x????(x?=?y)
//?2.
x?=?x????y

我想你猜對了,答案是1。

因?yàn)榇鸢?在任何情況下都會賦值x,而答案1只有在x為真時才會賦值。

它能為我們做什么?

那么,我們可以用它做什么呢?是的,它可以做與默認(rèn)參數(shù)完全相同的事情。

const?showName?=?(name)?=>?{
??name???=?'fatfish'
??console.log(name)
}

showName('medium')?//?medium
showName()?//?fatfish

它幾乎等同于以下代碼。

const?showName?=?(name?=?'fatfish')?=>?{
??console.log(name)
}

showName('medium')?//?medium
showName()?//?fatfish

好吧,我不得不承認(rèn)編寫默認(rèn)參數(shù)讓我更快樂。

3.邏輯或賦值(||=)

來自 mdn的解釋:邏輯或賦值 (x ||= y) 運(yùn)算符僅在 x 為假時才賦值。

const?obj?=?{
??name:?'',
??age:?0
}

obj.name?||=?'fatfish'
obj.age?||=?100

console.log(obj.name,?obj.age)?//?fatfish?100

小伙伴們可以看到,當(dāng)x的值為假值時,賦值成功。

它能為我們做什么?

來自mdn:如果“l(fā)yrics”元素為空,則顯示默認(rèn)值:

document.getElementById("lyrics").textContent?||=?"No?lyrics."

短路在這里特別有用,因?yàn)樵夭粫M(jìn)行不必要的更新,也不會導(dǎo)致不必要的副作用,例如,額外的解析或渲染工作,或失去焦點(diǎn)等。

4.邏輯與賦值(&&=)

來自mdn:邏輯與賦值 (x &&= y) 運(yùn)算符僅在 x 為真時才賦值。

與邏輯或賦值 (||=) 相反,只有 x 為真時才會正確賦值。文章來源地址http://www.zghlxwxcb.cn/news/detail-431520.html

const?obj?=?{
??name:?'fatfish',
??age:?100
}

obj.name?&&=?'medium'?//?medium
obj.age?&&=?1000?//?1000
console.log(obj.name,?obj.age)?//?medium?1000

到了這里,關(guān)于4個很多人都不知道的現(xiàn)代JavaScript技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 別人都不知道的“好用”網(wǎng)站,讓你的效率飛快

    別人都不知道的“好用”網(wǎng)站,讓你的效率飛快

    ???個人主頁:程序猿追 ???系列專欄:【日常學(xué)習(xí)上的分享】 ???目前狀態(tài):創(chuàng)建Java學(xué)習(xí)之路(零基礎(chǔ)到就業(yè)實(shí)戰(zhàn))系列,目前更新到JAVAWEB開發(fā) ???作者簡介:大家好,我是程序猿追,全棧領(lǐng)域新星創(chuàng)作者,算法愛好者,常在作者周榜排名前30,某不知名的 ACMer ???

    2024年02月10日
    瀏覽(47)
  • 擴(kuò)展點(diǎn)都不知道不要說你用了Spring Boot

    擴(kuò)展點(diǎn)都不知道不要說你用了Spring Boot

    哈哈,本次有點(diǎn)標(biāo)題黨的嫌疑了,話又說回來,如果只停留在Spring Boot的基本的CRUD層面,未免也太過局限了,當(dāng)需要去擴(kuò)展一些功能,寫一些組件的時候,就感覺無從下手了,所以本次,我們從一個標(biāo)題黨開始,了解一下Spring Boot 的擴(kuò)展點(diǎn),可以系統(tǒng)的了解記憶一下, 此文不

    2024年02月15日
    瀏覽(18)
  • 面試被打臉,數(shù)據(jù)結(jié)構(gòu)底層都不知道么--回去等通知吧

    面試被打臉,數(shù)據(jù)結(jié)構(gòu)底層都不知道么--回去等通知吧

    數(shù)據(jù)結(jié)構(gòu)之常見的8種數(shù)據(jù)結(jié)構(gòu): -數(shù)組Array -鏈表 Linked List -堆 heap -棧 stack -隊列 Queue -樹 Tree -散列表 Hash -圖 Graph 數(shù)據(jù)結(jié)構(gòu)-鏈表篇 Linklist定義: -是一種線性表,并不會按線性的順序存儲數(shù)據(jù),即邏輯上相鄰,物理上不一定相鄰的元素。通過指針域來尋找對應(yīng)的元素。 Linkli

    2024年02月10日
    瀏覽(23)
  • 2023面試被打臉,數(shù)據(jù)結(jié)構(gòu)底層都不知道么--回去等通知吧

    2023面試被打臉,數(shù)據(jù)結(jié)構(gòu)底層都不知道么--回去等通知吧

    數(shù)據(jù)結(jié)構(gòu)之常見的8種數(shù)據(jù)結(jié)構(gòu): -數(shù)組Array -鏈表 Linked List -堆 heap -棧 stack -隊列 Queue -樹 Tree -散列表 Hash -圖 Graph 數(shù)據(jù)結(jié)構(gòu)-鏈表篇 Linklist定義: -是一種線性表,并不會按線性的順序存儲數(shù)據(jù),即邏輯上相鄰,物理上不一定相鄰的元素。通過指針域來尋找對應(yīng)的元素。 Linkli

    2024年02月10日
    瀏覽(20)
  • Spring Security 自帶防火墻!你都不知道自己的系統(tǒng)有多安全!

    Spring Security 自帶防火墻!你都不知道自己的系統(tǒng)有多安全!

    一個是嚴(yán)格模式的防火墻設(shè)置,還有一個默認(rèn)防火墻設(shè)置。 DefaultHttpFirewall 的限制相對于 StrictHttpFirewall 要寬松一些,當(dāng)然也意味著安全性不如 StrictHttpFirewall。 Spring Security 中默認(rèn)使用的是 StrictHttpFirewall。 2.防護(hù)措施 那么 StrictHttpFirewall 都是從哪些方面來保護(hù)我們的應(yīng)用呢?

    2024年04月26日
    瀏覽(20)
  • 百分之80新手都不知道,SEO搜索引擎優(yōu)化【sitemap網(wǎng)站地圖 配置】

    百分之80新手都不知道,SEO搜索引擎優(yōu)化【sitemap網(wǎng)站地圖 配置】

    Sitemap 可方便網(wǎng)站管理員通知搜索引擎他們網(wǎng)站上有哪些可供抓取的網(wǎng)頁。最簡單的 Sitemap 形式,就是XML 文件,在其中列出網(wǎng)站中的網(wǎng)址以及關(guān)于每個網(wǎng)址的其他元數(shù)據(jù)(上次更新的時間、更改的頻率以及相對于網(wǎng)站上其他網(wǎng)址的重要程度為何等),以便搜索引擎可以更加智

    2023年04月09日
    瀏覽(45)
  • 很多人還不知道中視頻計劃手機(jī)上發(fā)布多端橫豎屏視頻的方法

    很多人還不知道中視頻計劃手機(jī)上發(fā)布多端橫豎屏視頻的方法

    如果說你剛開始接觸中視頻,你必須要學(xué)會的小知識。 橫屏視頻是16;9的視頻,一般是手機(jī)橫向拍攝的視頻。 上傳這樣的視頻有兩種方法。第一種是需要用到電腦,第二種就是我今天要分享的這種,沒有電腦,我們用手機(jī)也能辦到。從我贏助手掌握這個方法后,今天給大家

    2024年02月09日
    瀏覽(21)
  • 什么???你連vue中父組件怎么監(jiān)聽子組件的事件都不知道?快來看看vue2和vue3中父組件監(jiān)聽子組件事件的區(qū)別吧

    vue2和vue3中父組件監(jiān)聽子組件事件的區(qū)別 在Vue 2中,可以使用$emit方法在子組件上觸發(fā)自定義事件,并使用v-on或@指令在父組件中監(jiān)聽該事件,也就是通過父組件給子組件綁定一個自定義事件實(shí)現(xiàn)子給父傳遞數(shù)據(jù)。例如: 在這個例子中,當(dāng)子組件中的按鈕被單擊時,將觸發(fā)ch

    2024年02月12日
    瀏覽(36)
  • 【好書推薦】深入理解現(xiàn)代JavaScript

    【好書推薦】深入理解現(xiàn)代JavaScript

    T. J. Crowder是一位擁有30年經(jīng)驗(yàn)的軟件工程師。在他的整個職業(yè)生涯中,他至少有一半時間是在使用JavaScript從事開發(fā)工作。他經(jīng)營著軟件承包和產(chǎn)品公司Farsight Software。他經(jīng)常在Stack Overflow上為人們提供幫助,他是十大貢獻(xiàn)者之一和JavaScript標(biāo)簽的頂級貢獻(xiàn)者。當(dāng)他不工作或?qū)懽?/p>

    2024年02月08日
    瀏覽(17)
  • 【JavaScript】3.4 JavaScript在現(xiàn)代前端開發(fā)中的應(yīng)用

    【JavaScript】3.4 JavaScript在現(xiàn)代前端開發(fā)中的應(yīng)用

    JavaScript 是現(xiàn)代前端開發(fā)的核心。無論是交互效果,還是復(fù)雜的前端應(yīng)用,JavaScript 都發(fā)揮著關(guān)鍵作用。在本章節(jié)中,我們將探討 JavaScript 在現(xiàn)代前端開發(fā)中的應(yīng)用,包括如何使用 JavaScript 來處理用戶交互、動態(tài)內(nèi)容、前端路由、API 請求等。 JavaScript 是處理用戶交互的主要工

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包