簡(jiǎn)介
短路運(yùn)算、逗號(hào)運(yùn)算、簡(jiǎn)化條件語(yǔ)句、初始化小技巧
昨天一個(gè)同學(xué)在 URL 大爆炸 問(wèn)了我一個(gè)問(wèn)題:這是什么寫(xiě)法 (data[key] = value, data) 。平時(shí)在寫(xiě)文章的時(shí)候會(huì)把這些技巧稍微提示一下,認(rèn)為大家都知道這些技巧,引起了小二的自我反省。
希望大家可以一起成長(zhǎng),都不掉隊(duì)。
可能很多人都了解這些方法了,如果懂的同學(xué)就溫故知新,不懂的同學(xué)咱們迎頭追上。由于是個(gè)人常用技巧可能并不是最好的,如果有知道的同學(xué)也可以提出來(lái)一起成長(zhǎng)。
短路運(yùn)算只有當(dāng)?shù)谝粋€(gè)運(yùn)算數(shù)的值無(wú)法確定邏輯運(yùn)算的結(jié)果時(shí),會(huì)按照順序?qū)κO逻\(yùn)算數(shù)進(jìn)行求值。一起回憶初中常背的一句口訣:一真即真,一假即假。
一真即真一真即真 指的是 || 或運(yùn)算符,當(dāng)一個(gè)值為真并停止對(duì)后面的判斷。
默認(rèn)值function test(name) { name = name || "Bar" ; console.log(name) } // 輸出 Bar console.log(test());
當(dāng)然也可以用 ES6 的 spread 語(yǔ)法來(lái)完成默認(rèn)值,關(guān)于更多函數(shù)參數(shù)技巧可以查看 函數(shù)騷操作。不支持 ES6 時(shí)等需要默認(rèn)值操作時(shí),||一個(gè)值得使用的小技巧。
簡(jiǎn)化條件語(yǔ)句在開(kāi)發(fā)是時(shí)候,偶爾會(huì)遇到只有一行代碼的條件語(yǔ)句:
if(!name) { initName() }
不知道同學(xué)會(huì)不會(huì)和我一樣會(huì)覺(jué)得這樣寫(xiě)不好看,這里可以利用 || 來(lái)簡(jiǎn)化代碼:
name || initName()一假即假
一假即假 指的是 && 或運(yùn)算符,當(dāng)一個(gè)值為假時(shí)則會(huì)停止判斷,為真時(shí)則會(huì)一直判斷下去。
默認(rèn)值在取一些對(duì)象屬性的時(shí)候,對(duì)象屬性有可能為 null 或者 undefind 則會(huì)出現(xiàn)錯(cuò)誤:
const data = { name: "xiaoer", age: 18, company: null } // 拋出錯(cuò)誤: Uncaught TypeError: Cannot read property "name" of null console.log(data.company.name)
在這里 && 搭配 || 使用可以寫(xiě)出更實(shí)用的默認(rèn)值操作:
const data = { name: "xiaoer", age: 18, company: null } const name = data.company && data.company.name || "no name";簡(jiǎn)化條件語(yǔ)句
在開(kāi)發(fā)是時(shí)候,偶爾會(huì)遇到只有一行代碼的條件語(yǔ)句:
// 假設(shè)后端返回的用戶數(shù)據(jù)為 data const data = { name: "xiaoer", age: 18, company: null } if (data.company && data.company.name) { initCompany(); }
&& 和 || 一樣也可以用來(lái)簡(jiǎn)化條件語(yǔ)句:
data.company && data.company.name && initCompany();逗號(hào)運(yùn)算符 for 循環(huán)
在使用 for 循環(huán)的時(shí)候,可能不止需要迭代一個(gè)參數(shù),可以利用逗號(hào)表達(dá)式:
let i = 0, j = 0, times = 5; for (let i = 0, j = 0; i < times; i++, j++, j++){ console.log(i, j); }
i:0, j:0 i:1, j:2 i:2, j:4 i:3, j:6 i:4, j:8語(yǔ)句賦值
有時(shí)候會(huì)需要一次聲明多個(gè)變量:
const a = 0, b = 1, c = 2; // 輸出 a, b, c console.log(a, b, c); // 下面操作都會(huì)報(bào)錯(cuò) // 證明確實(shí)都是 const 常量 a = 2; b = 1; c = 1;簡(jiǎn)化語(yǔ)句
在寫(xiě)一些簡(jiǎn)短的函數(shù)時(shí)常常寫(xiě)成下面這樣:
const ins = (x) => { x++; return x; } [{count: 1}].map((x) => { x.count++; return x; })
如果需要進(jìn)行的操作很多倒是需要寫(xiě)得詳細(xì)方便他人閱讀,而且開(kāi)發(fā)并不是一個(gè)人。如果是這種一點(diǎn)點(diǎn)操作的時(shí)候,可以利用逗號(hào)運(yùn)算符來(lái)簡(jiǎn)化:
const ins = (x) => (x++, x) [{count: 1}].map((x) => (x.count++, x));一起成長(zhǎng)
在困惑的城市里總少不了并肩同行的 伙伴 讓我們一起成長(zhǎng)。
如果您想讓更多人看到文章可以點(diǎn)個(gè) 點(diǎn)贊。
如果您想激勵(lì)小二可以到 Github 給個(gè) 小星星。
如果您想與小二更多交流添加微信 m353839115。
本文原稿來(lái)自 PushMeTop
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/109231.html
showImg(https://segmentfault.com/img/remote/1460000018734296?w=900&h=500); 簡(jiǎn)介 可讀性、性能、Spread、Reduce 在 優(yōu)雅三連擊 中有同學(xué)提到了 可讀性 這個(gè)關(guān)鍵詞,就小二個(gè)人的觀點(diǎn) 在某個(gè)范圍內(nèi)使用比較常用到的小技巧,可以提升一定的可讀性,文中提到的短路運(yùn)算在初始化變量是提升可讀性的,并且在很多提倡優(yōu)化if 語(yǔ)句...
showImg(https://segmentfault.com/img/remote/1460000018709740?w=900&h=500); 簡(jiǎn)介 數(shù)組、初始化、快速生成數(shù)組、內(nèi)存泄露 有時(shí)候會(huì)需要對(duì)數(shù)組進(jìn)行一些初始化,最常用到的便是 for 循環(huán): let num = []; for (let i = 0; i < 10; i++) { // 做一些其他操作 // 或者返...
showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/insert-item-inside-an-array/poster.png); 簡(jiǎn)介
showImg(https://segmentfault.com/img/remote/1460000018667432?w=900&h=500); 前言 函數(shù)、參數(shù)、解構(gòu)、優(yōu)雅、可讀性、技巧 不管是調(diào)用第三方庫(kù)或者是項(xiàng)目自身的函數(shù),開(kāi)發(fā)過(guò)程中總少不了函數(shù)??梢哉f(shuō)函數(shù)是解放代碼的第一生產(chǎn)力,有的同學(xué)會(huì)說(shuō)了那你把類(lèi)放在那里了。其實(shí)用函數(shù)和數(shù)據(jù)一樣可以模擬出來(lái)類(lèi),類(lèi)更多的是對(duì)函數(shù)的歸集和復(fù)用進(jìn)行擴(kuò)充升...
showImg(https://segmentfault.com/img/remote/1460000018771037?w=900&h=500); 簡(jiǎn)介 benchmark、基準(zhǔn)測(cè)試、jsPerf 在 優(yōu)雅插入數(shù)組 一文中大家最多的評(píng)論就是 能不能加個(gè)基準(zhǔn)測(cè)試。小二不是不喜歡加基準(zhǔn)測(cè)試而是現(xiàn)在硬件設(shè)備的性能越來(lái)越快了,有時(shí)候一些操作不是性能問(wèn)題的主要原因,當(dāng)然這不是我們不寫(xiě)出好代碼的理由。 書(shū)寫(xiě)...
閱讀 1255·2023-04-26 00:34
閱讀 3416·2023-04-25 16:47
閱讀 2207·2021-11-24 11:14
閱讀 3180·2021-09-26 09:55
閱讀 3895·2019-08-30 15:56
閱讀 3273·2019-08-29 16:57
閱讀 1974·2019-08-26 13:38
閱讀 2723·2019-08-26 12:22