gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

總結(jié)15個(gè)JavaScript開發(fā)技巧(整理分享)

本篇文章給大家分享一些經(jīng)常在項(xiàng)目中使用一些技巧,JavaScript 有很多很酷的特性,大多數(shù)初學(xué)者和中級(jí)開發(fā)人員都不知道。希望對大家有幫助。

總結(jié)15個(gè)JavaScript開發(fā)技巧(整理分享)

1. 有條件地向?qū)ο筇砑訉傩?/span>

我們可以使用展開運(yùn)算符號(hào)(…)來有條件地向 JS 對象快速添加屬性。

const condition = true; const person = {   id: 1,   name: 'John Doe',   ...(condition && { age: 16 }), };

如果每個(gè)操作數(shù)的值都為 true,則 && 操作符返回最后一個(gè)求值表達(dá)式。因此返回一個(gè)對象{age: 16},然后將其擴(kuò)展為person對象的一部分。

如果 condition 為 false,JavaScript 會(huì)做這樣的事情:

const person = {   id: 1,   name: '前端小智',   ...(false),  }; // 展開 `false` 對對象沒有影響 console.log(person); // { id: 1, name: 'John Doe' }

2.檢查屬性是否存在對象中

可以使用 in 關(guān)鍵字來檢查 JavaScript 對象中是否存在某個(gè)屬性。

const person = { name: '前端小智', salary: 1000 }; console.log('salary' in person); // true console.log('age' in person); // false

3.對象中的動(dòng)態(tài)屬性名稱

使用動(dòng)態(tài)鍵設(shè)置對象屬性很簡單。只需使用['key name']來添加屬性:

const dynamic = 'flavour'; var item = {   name: '前端小智',   [dynamic]: '巧克力' } console.log(item); // { name: '前端小智', flavour: '巧克力' }

同樣的技巧也可用于使用動(dòng)態(tài)鍵引用對象屬性:

const keyName = 'name'; console.log(item[keyName]); // returns '前端小智'

4. 使用動(dòng)態(tài)鍵進(jìn)行對象解構(gòu)

我們知道在對象解構(gòu)時(shí),可以使用 : 來對解構(gòu)的屬性進(jìn)行重命名。但,你是否知道鍵名是動(dòng)態(tài)的時(shí),也可以解構(gòu)對象的屬性?

const person = { id: 1, name: '前端小智' }; const { name: personName } = person; console.log(personName); // '前端小智'

現(xiàn)在,我們用動(dòng)態(tài)鍵來解構(gòu)屬性:

const templates = {   'hello': 'Hello there',   'bye': 'Good bye' }; const templateName = 'bye'; const { [templateName]: template } = templates; console.log(template); // Good bye

5. 空值合并 ?? 操作符

當(dāng)我們想檢查一個(gè)變量是否為 null 或 undefined 時(shí),??操作符很有用。當(dāng)它的左側(cè)操作數(shù)為null 或 undefined時(shí),它返回右側(cè)的操作數(shù),否則返回其左側(cè)的操作數(shù)。

const foo = null ?? 'Hello'; console.log(foo); // 'Hello' const bar = 'Not null' ?? 'Hello'; console.log(bar); // 'Not null' const baz = 0 ?? 'Hello'; console.log(baz); // 0

在第三個(gè)示例中,返回 0,因?yàn)榧词?0 在 JS 中被認(rèn)為是假的,但它不是null的或undefined的。你可能認(rèn)為我們可以用||算子但這兩者之間是有區(qū)別的

你可能認(rèn)為我們可以在這里使用 || 操作符,但這兩者之間是有區(qū)別的。

const cannotBeZero = 0 || 5; console.log(cannotBeZero); // 5 const canBeZero = 0 ?? 5; console.log(canBeZero); // 0

6.可選鏈 ?.

我們是不是經(jīng)常遇到這樣的錯(cuò)誤: TypeError: Cannot read property ‘foo’ of null。這對每一個(gè)毅開發(fā)人員來說都是一個(gè)煩人的問題。引入可選鏈就是為了解決這個(gè)問題。一起來看看:

const book = { id:1, title: 'Title', author: null }; // 通常情況下,你會(huì)這樣做 console.log(book.author.age) // throws error console.log(book.author && book.author.age); // null // 使用可選鏈 console.log(book.author?.age); // undefined // 或深度可選鏈 console.log(book.author?.address?.city); // undefined

還可以使用如下函數(shù)可選鏈:

const person = {   firstName: '前端',   lastName: '小智',   printName: function () {     return `${this.firstName} ${this.lastName}`;   }, }; console.log(person.printName()); // '前端 小智' console.log(persone.doesNotExist?.()); // undefined

7. 使用 !! 操作符

!! 運(yùn)算符可用于將表達(dá)式的結(jié)果快速轉(zhuǎn)換為布爾值(true或false):

const greeting = 'Hello there!'; console.log(!!greeting) // true const noGreeting = ''; console.log(!!noGreeting); // false

8. 字符串和整數(shù)轉(zhuǎn)換

使用 + 操作符將字符串快速轉(zhuǎn)換為數(shù)字:

const stringNumer = '123'; console.log(+stringNumer); //123 console.log(typeof +stringNumer); //'number'

要將數(shù)字快速轉(zhuǎn)換為字符串,也可以使用 + 操作符,后面跟著一個(gè)空字符串:

const myString = 25 + ''; console.log(myString); //'25' console.log(typeof myString); //'string'

這些類型轉(zhuǎn)換非常方便,但它們的清晰度和代碼可讀性較差。所以實(shí)際開發(fā),需要慎重的選擇使用。

9. 檢查數(shù)組中的假值

大家應(yīng)該都用過數(shù)組方法:filter、some、every,這些方法可以配合 Boolean 方法來測試真假值。

const myArray = [null, false, 'Hello', undefined, 0]; // 過濾虛值 const filtered = myArray.filter(Boolean); console.log(filtered); // ['Hello'] // 檢查至少一個(gè)值是否為真 const anyTruthy = myArray.some(Boolean); console.log(anyTruthy); // true // 檢查所有的值是否為真 const allTruthy = myArray.every(Boolean); console.log(allTruthy); // false

下面是它的工作原理。我們知道這些數(shù)組方法接受一個(gè)回調(diào)函數(shù),所以我們傳遞 Boolean 作為回調(diào)函數(shù)。Boolean 函數(shù)本身接受一個(gè)參數(shù),并根據(jù)參數(shù)的真實(shí)性返回 true 或 false。所以:

myArray.filter(val => Boolean(val));

等價(jià)于:

myArray.filter(Boolean);

10. 扁平化數(shù)組

在原型 Array 上有一個(gè)方法 flat,可以從一個(gè)數(shù)組的數(shù)組中制作一個(gè)單一的數(shù)組。

const myArray = [{ id: 1 }, [{ id: 2 }], [{ id: 3 }]]; const flattedArray = myArray.flat();  //[ { id: 1 }, { id: 2 }, { id: 3 } ]

你也可以定義一個(gè)深度級(jí)別,指定一個(gè)嵌套的數(shù)組結(jié)構(gòu)應(yīng)該被扁平化的深度。例如:

const arr = [0, 1, 2, [[[3, 4]]]]; console.log(arr.flat(2)); // returns [0, 1, 2, [3,4]]

11.Object.entries

大多數(shù)開發(fā)人員使用 Object.keys 方法來迭代對象。 此方法僅返回對象鍵的數(shù)組,而不返回值。 我們可以使用 Object.entries 來獲取鍵和值。

const person = {   name: '前端小智',   age: 20 }; Object.keys(person); // ['name', 'age'] Object.entries(data); // [['name', '前端小智'], ['age', 20]]

為了迭代一個(gè)對象,我們可以執(zhí)行以下操作:

Object.keys(person).forEach((key) => {   console.log(`${key} is ${person[key]}`); }); // 使用 entries 獲取鍵和值 Object.entries(person).forEach(([key, value]) => {   console.log(`${key} is ${value}`); }); // name is 前端小智 // age is 20

上述兩種方法都返回相同的結(jié)果,但 Object.entries 獲取鍵值對更容易。

12.replaceAll 方法

在 JS 中,要將所有出現(xiàn)的字符串替換為另一個(gè)字符串,我們需要使用如下所示的正則表達(dá)式:

const str = 'Red-Green-Blue'; // 只規(guī)制第一次出現(xiàn)的 str.replace('-', ' '); // Red Green-Blue // 使用 RegEx 替換所有匹配項(xiàng) str.replace(/-/g, ' '); // Red Green Blue

但是在 ES12 中,一個(gè)名為 replaceAll 的新方法被添加到 String.prototype 中,它用另一個(gè)字符串值替換所有出現(xiàn)的字符串。

str.replaceAll('-', ' '); // Red Green Blue

13.數(shù)字分隔符

可以使用下劃線作為數(shù)字分隔符,這樣可以方便地計(jì)算數(shù)字中0的個(gè)數(shù)。

// 難以閱讀 const billion = 1000000000; // 易于閱讀 const readableBillion = 1000_000_000; console.log(readableBillion) //1000000000

下劃線分隔符也可以用于BigInt數(shù)字,如下例所示

const trillion = 1000_000_000_000n; console.log(trillion); // 1000000000000

14.document.designMode

與前端的JavaScript有關(guān),設(shè)計(jì)模式讓你可以編輯頁面上的任何內(nèi)容。只要打開瀏覽器控制臺(tái),輸入以下內(nèi)容即可。

document.designMode = 'on';

15.邏輯賦值運(yùn)算符

邏輯賦值運(yùn)算符是由邏輯運(yùn)算符&&、||、??和賦值運(yùn)算符=組合而成。

const a = 1; const b = 2; a &&= b; console.log(a); // 2 // 上面等價(jià)于 a && (a = b); // 或者 if (a) {   a = b }

檢查a的值是否為真,如果為真,那么更新a的值。使用邏輯或 ||操作符也可以做同樣的事情。

const a = null; const b = 3; a ||= b; console.log(a); // 3 // 上面等價(jià)于 a || (a = b);

使用空值合并操作符 ??:

const a = null; const b = 3; a ??= b; console.log(a); // 3 // 上面等價(jià)于 if (a === null || a === undefined) {   a = b; }

注意:??操作符只檢查 null 或 undefined 的值。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美视频在线播放一区| www.69av| 国产真人做爰毛片视频直播| 污污视频在线免费| 男女污污的视频| 免费高清在线观看免费| 中文字幕日本最新乱码视频| 国产精品专区在线| 国产夫妻自拍一区| 9久久9毛片又大又硬又粗| 国产精品三级一区二区| 日本阿v视频在线观看| 成人免费视频91| 日韩欧美一区三区| 国产精品少妇在线视频| 手机视频在线观看| 17c国产在线| 日本黄网站色大片免费观看| 激情五月婷婷六月| 国产一区二区在线视频播放| 91av在线免费播放| 992kp快乐看片永久免费网址| 4444在线观看| 青青草视频在线免费播放| 无码少妇一区二区三区芒果| 一区二区三区四区毛片| 天天干天天色天天爽| bt天堂新版中文在线地址| cao在线观看| 日韩在线第三页| 日本黄色播放器| 国产av天堂无码一区二区三区| 亚洲欧洲日产国码无码久久99| 各处沟厕大尺度偷拍女厕嘘嘘| 手机在线成人免费视频| 精品无码国产一区二区三区av| 国内外成人激情视频| 五月天婷婷在线观看视频| 国产精品专区在线| 五月婷婷狠狠操| 亚洲精品蜜桃久久久久久| 日本精品www| 女人帮男人橹视频播放| 欧美特黄aaa| 免费激情视频在线观看| av 日韩 人妻 黑人 综合 无码| aaa毛片在线观看| 亚洲乱码日产精品bd在线观看| 国产性xxxx18免费观看视频| 日本三日本三级少妇三级66| 另类小说色综合| 缅甸午夜性猛交xxxx| 在线播放黄色av| 天美星空大象mv在线观看视频| 成人免费视频91| 日本成人在线不卡| 不用播放器的免费av| 久草在在线视频| 两根大肉大捧一进一出好爽视频| 性欧美18一19内谢| 日韩av片专区| 九九热在线免费| 污视频免费在线观看网站| 日韩少妇内射免费播放18禁裸乳| 中文字幕乱码免费| 99精品一级欧美片免费播放| 香蕉视频xxxx| 九九热视频免费| 6080国产精品| 国产又大又长又粗又黄| 在线一区二区不卡| www.久久av.com| 亚洲欧美一区二区三区不卡| 91制片厂免费观看| 午夜啪啪福利视频| 轻点好疼好大好爽视频| 麻豆tv在线播放| 欧美成人xxxxx| 亚洲成色www.777999| 亚洲欧美在线精品| 手机精品视频在线| 大桥未久一区二区| 久久久天堂国产精品| 日本www在线视频| 国产a级片免费观看| 香蕉视频禁止18| 日本道在线视频| 欧美 日韩 国产 高清| 又粗又黑又大的吊av| 青青草国产精品视频| 男人添女荫道口喷水视频| 国产99久久九九精品无码| 日韩精品一区中文字幕| 国产91色在线观看| 男女裸体影院高潮| 日韩中文字幕二区| 日韩最新中文字幕| av动漫在线看| 超碰97免费观看| 白嫩少妇丰满一区二区| 最新中文字幕久久| 北条麻妃在线视频观看| 欧美第一页浮力影院| 日韩av新片网| 亚洲 国产 图片| av观看免费在线| 97超碰人人爱| www.色就是色.com| 国产精品免费入口| 99精品视频免费版的特色功能| koreanbj精品视频一区| 国产日韩欧美大片| 一级黄色特级片| 俄罗斯av网站| 色一情一乱一乱一区91| 欧美日韩一区二区三区69堂| 国产精品50p| 欧洲精品在线播放| 国产女主播av| 香蕉视频免费版| 毛毛毛毛毛毛毛片123| 欧美激情国产精品日韩| 久久综合久久久久| 欧洲美女亚洲激情| 国产熟人av一二三区| 欧美精品久久久久久久免费| 男人添女人下部视频免费| 日韩精品在线播放视频| 黄色一级片免费的| 在线观看的毛片| 久久黄色免费看| 国产精品99久久免费黑人人妻| 一女被多男玩喷潮视频| 18禁免费观看网站| 丝袜老师办公室里做好紧好爽| 欧美精品自拍视频| 无码专区aaaaaa免费视频| 国产一二三在线视频| 国产原创popny丨九色| 青青青在线视频播放| 97成人在线免费视频| 日韩a在线播放| 簧片在线免费看| 亚洲黄色av片| 超碰10000| 国产一区二区网| 日韩 欧美 高清| 牛夜精品久久久久久久| 亚洲黄色av网址| 黄色网zhan| 欧美,日韩,国产在线| 午夜视频你懂的| 超碰成人在线免费观看| 国风产精品一区二区| 成人免费观看毛片| 亚洲制服中文字幕| www.夜夜爱| 国产理论在线播放| 午夜久久久久久久久久久| 久艹在线免费观看| 国产成人av影视| 五月天男人天堂| 日韩在线一级片| 99999精品| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美精品一区二区三区免费播放| 国产精品自拍视频在线| 精品国产一区二区三区在线| 浮妇高潮喷白浆视频| 动漫av网站免费观看| youjizz.com在线观看| 韩国中文字幕av| 亚洲乱码日产精品bd在线观看| 欧美两根一起进3p做受视频| 无码人妻精品一区二区蜜桃百度| 国产精品亚洲二区在线观看| 四虎永久免费网站| 亚洲综合欧美在线| 日本不卡在线观看视频| 看全色黄大色大片| 中文字幕免费高清在线| 国产精品久久国产| 波多野结衣网页| 最新av免费在线观看| 久久黄色免费看| 男人日女人逼逼| 日本中文字幕在线视频观看| 黄色高清视频网站| 一区二区三区欧美精品| 网站一区二区三区| 国产黄色特级片| 青青艹视频在线| 成人免费性视频| 99热久久这里只有精品| 三上悠亚免费在线观看| 中文字幕剧情在线观看| 亚洲一级免费在线观看| 亚洲不卡视频在线| 国产探花在线看| av在线无限看|