成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

十個你應該學會使用的現代JavaScript技巧

開發 前端
JavaScript 有很多很酷的特性,但大多數初學者和中級開發人員都不知道。 今天,我挑選了 10 個我在日常 JavaScript 項目中使用的技巧。

 [[427748]]

1、有條件地向對象添加屬性

我們可以使用擴展運算符 ... 來有條件地向 JavaScript 對象快速添加屬性。 

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

如果每個操作數的計算結果都為真, && 運算符將返回最后計算的表達式。因此返回一個對象 { age: 16 },然后,將其擴展為 person 對象的一部分。

如果condition為 false,則 JavaScript 將執行以下操作: 

  1. const person = { 
  2.   id: 1, 
  3.   name'John Doe'
  4.   ...(false), // evaluates to false 
  5. }; 
  6. // spreading false has no effect on the object 
  7. console.log(person); // { id: 1, name'John Doe' } 

2、檢查一個屬性是否存在于一個對象中

你知道我們可以使用 in 關鍵字來檢查 JavaScript 對象中是否存在屬性嗎? 

  1. const person = { name'John Doe', salary: 1000 }; 
  2. console.log('salary' in person); // returns true 
  3. console.log('age' in person); // returns false 

3、對象中的動態屬性名稱

使用動態鍵設置對象屬性很簡單。只需使用 ['key_name'] 符號添加屬性: 

  1. const dynamic = 'flavour'
  2. var item = { 
  3.   name'Biscuit'
  4.   [dynamic]: 'Chocolate' 
  5. console.log(item); // { name'Biscuit', flavour: 'Chocolate' } 

同樣的技巧也可用于使用動態鍵引用對象屬性: 

  1. const keyName = 'name'
  2. console.log(item[keyName]); // returns 'Biscuit' 

4、使用動態鍵進行對象解構

你知道可以解構一個變量并立即用 : 符號重命名它。但是,當你不知道鍵名或鍵名是動態的時,你也可以解構對象的屬性嗎?

首先,讓我們看看如何在解構(使用別名解構)時重命名變量。 

  1. const person = { id: 1, name'John Doe' }; 
  2. const { name: personName } = person; 
  3. console.log(personName); // returns 'John Doe' 

現在,讓我們使用動態鍵來解構屬性: 

  1. const templates = { 
  2.   'hello''Hello there'
  3.   'bye''Good bye' 
  4. }; 
  5. const templateName = 'bye'
  6. const { [templateName]: template } = templates; 
  7. console.log(template) // returns 'Good bye' 

5、空合并,?? 運算符

當你要檢查變量是 null 還是 undefined 時,此?運算符很有用。當左側為null或者undefined時,它返回右側值,否則返回其左側操作數。 

  1. const foo = null ?? 'Hello'
  2. console.log(foo); // returns 'Hello' 
  3. const bar = 'Not null' ?? 'Hello'
  4. console.log(bar); // returns 'Not null' 
  5. const baz = 0 ?? 'Hello'
  6. console.log(baz); // returns 0 

在第三個示例中,返回 0 是因為即使 0 在 JavaScript 中被認為是假的,它不是 null ,也不是undefined。你可能認為我們可以使用 || 運算符在這里,但這兩者之間存在差異: 

  1. const cannotBeZero = 0 || 5; 
  2. console.log(cannotBeZero); // returns 5 
  3. const canBeZero = 0 ?? 5; 
  4. console.log(canBeZero); // returns 0 

6、可選鏈接 (?.)

你是否也討厭像TypeError:無法讀取 null 的屬性“foo”之類的錯誤。這對每個 JavaSript 開發人員來說都是頭疼的問題。引入了可選鏈就是為了解決這個問題。讓我們來看看: 

  1. const book = { id:1, title: 'Title', author: null }; 
  2. // normally, you would do this 
  3. console.log(book.author.age) // throws error 
  4. console.log(book.author && book.author.age); // returns null (no error) 
  5. // with optional chaining 
  6. console.log(book.author?.age); // returns undefined 
  7. // or deep optional chaining 
  8. console.log(book.author?.address?.city); // returns undefined 

你還可以使用具有以下功能的可選鏈接: 

  1. const person = { 
  2.   firstName: 'Haseeb'
  3.   lastName: 'Anwar'
  4.   printName: function () { 
  5.     return `${this.firstName} ${this.lastName}`; 
  6.   }, 
  7. }; 
  8. console.log(person.printName()); // returns 'Haseeb Anwar' 
  9. console.log(persone.doesNotExist?.()); // returns undefined 

7、使用 !! 運算符進行布爾轉換

該 !! 運算符可用于將表達式的結果快速轉換為布爾值 true 或 false。就是這樣: 

  1. const greeting = 'Hello there!'
  2. console.log(!!greeting) // returns true 
  3. const noGreeting = ''
  4. console.log(!!noGreeting); // returns false 

8、字符串和整數轉換

使用 + 運算符快速將字符串轉換為數字,如下所示: 

  1. const stringNumer = '123'
  2. console.log(+stringNumer); // returns integer 123 
  3. console.log(typeof +stringNumer); // returns 'number' 

要將數字快速轉換為字符串,請使用 + 運算符后跟空字符串 "": 

  1. const myString = 25 + ''
  2. console.log(myString); // returns '25' 
  3. console.log(typeof myString); // returns 'string' 

這些類型轉換非常方便,但它們的清晰度和代碼可讀性較差。因此,在生產中使用它們之前,你可能需要考慮一下。但是,不要猶豫在代碼中使用它們。

9、檢查數組中的假值

你必須熟悉 filter、some 和 every 數組方法。但是,你也應該知道你可以只使用Boolean方法來測試真值: 

  1. const myArray = [nullfalse'Hello', undefined, 0]; 
  2. // filter falsy values 
  3. const filtered = myArray.filter(Boolean); 
  4. console.log(filtered); // returns ['Hello'
  5. // check if at least one value is truthy 
  6. const anyTruthy = myArray.some(Boolean); 
  7. console.log(anyTruthy); // returns true 
  8. // check if all values are truthy 
  9. const allTruthy = myArray.every(Boolean); 
  10. console.log(allTruthy); // returns false 

這是它的工作原理。正如我們所知,這些數組方法采用回調函數,因此我們將 Boolean方法作為回調函數傳遞。Boolean本身接受一個參數并根據參數的真實性返回 true 或 false。所以我們可以這樣說: 

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

是不是和這個一樣: 

  1. myArray.filter(Boolean); 

10、扁平化數組

原型 Array 上有一個方法 flat 可以讓你從數組的數組中創建一個數組: 

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

你還可以定義一個深度級別,指定嵌套數組結構應展平的深度。例如: 

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

 【編輯推薦】

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2023-12-27 14:12:40

JavaScrip技巧

2023-01-27 15:22:11

JavaScript開發編程語言

2023-10-16 07:55:15

JavaScript對象技巧

2023-05-16 15:32:45

JavaScriptWeb前端工程師

2024-03-04 16:32:02

JavaScript運算符

2024-04-24 14:52:26

JavaScriptWeb 開發

2022-05-12 08:12:51

PythonPip技巧

2015-08-24 09:12:00

Redis 技巧

2010-09-08 14:35:22

CSS

2021-03-05 11:49:03

React代碼運算符

2022-05-06 13:19:13

JS前端

2022-12-28 09:02:50

WebStorm主題字段

2023-04-17 16:19:32

編程語言JavaScript開發

2023-07-24 07:11:43

2023-02-09 16:15:27

JavaScript編程語言字符串

2024-12-02 14:28:17

JavaScriptWeb開發

2024-08-21 08:37:47

CodeEmmet懸浮框

2022-08-28 19:03:18

JavaScript編程語言開發

2014-03-04 09:35:45

JavaScript調試

2024-12-03 14:33:42

Python遞歸編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费视频在线观看 | 久久国品片 | 在线视频国产一区 | 97日日碰人人模人人澡分享吧 | 国产99精品 | 精品一区二区三区在线观看 | 午夜电影一区 | 亚洲97 | 一区二区电影网 | 亚洲国产成人精品女人久久久野战 | 7777奇米影视| 国产伦精品一区二区三区视频金莲 | 99久久久久久久 | 久久国产福利 | 亚洲视频免费观看 | 国产一区二 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 99精品国产一区二区青青牛奶 | 免费观看a级毛片在线播放 黄网站免费入口 | 亚洲国产69 | 欧美精品一区二区三区在线 | 成人毛片网站 | 国产精品一区二区福利视频 | 亚洲国产精品va在线看黑人 | 色婷婷av久久久久久久 | 欧美精品成人 | 夜夜干夜夜操 | 欧美a级成人淫片免费看 | 成人精品免费视频 | 国产99久久精品 | 亚洲成人精品一区 | 精品国产欧美一区二区三区成人 | 91精品国产91久久久久久丝袜 | 国产精品a久久久久 | 天天操网| 国产在线一区观看 | 国产精品91网站 | 久久久久久国产精品免费免费 | av入口 | 国产精品久久久久久久久久久久 | 99国产精品久久久 |