国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

書上不教但非常實用的JavaScript實踐

開發 前端
可選鏈接這項JavaScript中的功能,簡化了當屬性或方法可能不存在時,訪問對象上的屬性或調用方法的過程。它可幫助防止錯誤、簡化對undefined或null值的條件檢查。

我是通過看視頻、上網課和讀文章來學習JavaScript的。

在學習和實踐過程中,我發現有些東西雖然在課程中沒有得到明確的教授和解釋,但卻被開發人員大量使用。

因此,為了幫助JavaScript初學者在掌握基礎知識后,能更靈活自如地運用JS知識,我寫了這篇文章。

一起來看看吧!

短路運算符

console.log(true || 'something') // 'true'  returns left side expression on the truthy value
console.log(null || 'something') // 'something'

console.log(true && 'somethingNew') // 'something' returns right side expression on the truthy value
console.log(null && 'somethingNew') // 'null' returns left side on falsy value

// nullish operator returns right side only if null or undefined value is on left otherwise it returns right
console.log(null ?? 'printA')
console.log(undefined ?? 'printB')
console.log(false ?? 'printB')
console.log(true ?? 'printB')

//assignment operator
const rest1 = {
  owner: 'Jonas',
  rooms : 15,
  available : true,
}

const rest2 = {
  owner: 'Max',
  rooms : 12,
  available : false,
  booked : 'Yes'
}

rest1.available &&= 'booking done'
rest2.available &&= 'booking done'

console.log(rest1.available) // 'booking done'
console.log(rest2.available) // 'false'

rest1.booked &&= 'yes'
console.log(rest1.booked) //undefined

rest1.booked ||= 'yes'
console.log(rest1.booked) // 'yes' 

rest2.address ??= 'calfornia'
console.log(rest2.address) // 'calfornia' so basically ??= assign the value if not present
rest2.booked ??= 'No'
console.log(rest2.booked) 'Yes' //since the value was already present therefore this No was not updated

可選鏈接 ?.

可選鏈接這項JavaScript中的功能,簡化了當屬性或方法可能不存在時,訪問對象上的屬性或調用方法的過程。它可幫助防止錯誤、簡化對undefined或null值的條件檢查。

可選鏈接使用?.運算符。請看以下示例:

const person = {
  name: 'John',
  address: {
    street: '123 Main St',
  },
};

// Without optional chaining
const street = person.address ? person.address.street : undefined;

console.log(street); // '123 Main St'

// With Optional chaining
const street = person.address?.street;

console.log(street); // '123 Main St'
const car = {
  startEngine: function () {
    console.log('Engine started');
  },
};

// Without optional chaining
if (car.startEngine) {
  car.startEngine();
}
//with optional chaining
car.startEngine?.(); // 'Engine started'

還可以將可選鏈接與屬性訪問和方法調用結合到單個表達式中:

const user = {
  profile: {
    username: 'jsmith',
    greet: function () {
      console.log('Hello, ' + this.username);
    },
  },
};

const greeting = user.profile?.greet?.();

// If `profile` or `greet` are missing, `greeting` will be undefined.

for-of循環

JavaScript中的for… of循環用于遍歷可迭代對象,如數組、字符串、映射、集合等的值。與傳統的for和while循環相比,語法更簡潔、更干凈。以下是for… of循環示例:

const numbers = [1, 2, 3, 4, 5];

for (const number of numbers) {
  console.log(number);
}
// Output:
// 1
// 2
// 3
// 4
// 5

遍歷字符串示例

const text = "Hello, World!";

for (const char of text) {
  console.log(char);
}
// Output:
// H
// e
// l
// l
// o
// ,
//  
// W
// o
// r
// l
// d
// !

遍歷對象示例

const students = [
  { name: "Alice", age: 22 },
  { name: "Bob", age: 25 },
  { name: "Carol", age: 21 },
];

for (const student of students) {
  console.log(student.name, student.age);
}
// Output:
// Alice 22
// Bob 25
// Carol 21

遍歷map

const myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");

for (const [key, value] of myMap) {
  console.log(key, value);
}
// Output:
// key1 value1
// key2 value2

遍歷set

const mySet = new Set([1, 2, 3, 2, 4]);

for (const item of mySet) {
  console.log(item);
}
// Output:
// 1
// 2
// 3
// 4

還可以試試其他循環,例如

const rest2 = {
  owner: 'Max',
  rooms : 12,
  available : false,
  booked : 'Yes'
}

console.log(Object.keys(rest2))
console.log(Object.values(rest2))

for (let prop of Object.keys(rest2)){
  console.log(prop)
}

console.log(Object.entries(rest2))

for(let entry of Object.entries(rest2)){
  console.log(entry)
}

Set

set是唯一數據值的集合。

語法如下所示:

const uniqueSet = new Set(['a','b','b','c','c'])

以下是一些set方法

const uniqueSet = new Set(['a','b','b','c','c'])
console.log(uniqueSet) //Set { 'a', 'b', 'c' }
console.log(uniqueSet.size) //3
console.log(uniqueSet.has('b')) //true
console.log(uniqueSet.has('d')) //false
uniqueSet.add('d')
console.log(uniqueSet.has('d')) //true
uniqueSet.delete('b')
console.log(uniqueSet.has('b')) //false
uniqueSet.clear()
console.log(uniqueSet.size)//0
const animalNames = ["dog", "cat", "lion", "elephant", "dog", "tiger", "cat", "giraffe", "monkey", "elephant"];

const uniqueAnimals = [...new Set(animalNames)];
console.log(uniqueAnimals) //

映射map

映射有點像具有鍵值對的對象,但有一個區別,在對象中,鍵始終是字符串類型,而在映射中,鍵可以具有任何類型。

const rest = new Map();
rest.set('name', 'Dwesis');
rest.set(1,'Prayagraj');
console.log(rest.get('name'))

console.log(rest.set(2, 'Ahmedabad'))

rest.set('categories',['italian','chinese','indian']).set('open',11).set('close',23).set(true,'We are open')
console.log(rest.get(true))
const rest = new Map([

  ['name', 'Dewsis'],
  [true, 'We are open'],
  [false, 'we are close'],
  [1, 'Prayagraj'],
  [2, 'Ahmedabad']
]
)

console.log(rest.get(true)) // 'We are open'
console.log(rest.get(false)) // 'we are close'
console.log(rest.has('open')) // true
console.log(rest.has('close')) // false
console.log(rest.has(3)) // false
console.log(rest.size) // 5

for (let [key,value] of rest){
  console.log(`${key} : ${value}`)
}
//Output
//name : Dewsis
// true : We are open
// false : we are close
// 1 : Prayagraj
// 2 : Ahmedabad

數組 vs set,以及對象 vs Map

數組:

在以下情況下使用數組:

  • 需要有序的元素集合。
  • 需要對元素進行索引訪問。
  • 想要存儲類似項目或相關項目的列表。
  • 需要對元素執行迭代、映射或縮減等操作。

例如:

const colors = ['red', 'green', 'blue'];

set:

在以下情況下使用set:

  • 需要存儲沒有重復項的唯一值。
  • 希望執行諸如檢查是否存在之類的操作,或者執行諸如并集、交集或差值之類的集合操作。
  • 需要確保每個元素在集合中僅出現一次。

例如:

const uniqueNumbers = new Set([1, 2, 3, 4, 4, 5]);

對象:

在以下情況下使用對象:

  • 需要存儲鍵值對,例如將唯一鍵映射到值。
  • 希望使用屬性和方法表示實體或復雜數據結構。
  • 需要執行基于鍵的數據檢索、修改或刪除等操作。

例如:

const person = {
     name: 'John Doe',
     age: 30,
     email: 'johndoe@example.com'
   };

map

在以下情況下使用map:

  • 需要使用任意數據類型(包括對象)作為鍵。
  • 需要可迭代的數據結構來維護插入順序。
  • 希望使用size屬性輕松確定map大小。
  • 需要執行添加或刪除元素、檢查鍵是否存在以及迭代鍵值對等操作。

例如:

const myMap = new Map();
   const key1 = { id: 1 };
   const key2 = { id: 2 };
   myMap.set(key1, 'value1');
   myMap.set(key2, 'value2');

當你需要使用鍵值對、需要使用各種數據類型作為鍵、保持插入順序以及輕松管理數據結構大小等時,Map非常有用。

希望這篇文章能對大家有所幫助。

責任編輯:武曉燕 來源: 前端新世界
相關推薦

2016-05-10 10:16:13

JavaScript技巧

2023-01-31 16:35:34

JavaScript測試框架

2022-04-22 10:41:53

HTML標簽功能

2020-08-21 10:25:02

PythonWget

2020-09-14 11:10:43

Python代碼

2009-05-25 09:00:45

Javascript免費工具Javascript框

2021-09-24 14:20:25

開發技能工具

2013-12-31 09:26:31

JavaScript技巧

2023-04-19 15:26:52

JavaScriptES13開發

2020-11-11 11:05:41

Linux工具命令

2024-01-08 06:44:08

PodK8Skubectl

2019-09-26 14:56:18

GitHub 技術開源

2017-09-05 08:57:02

Linux命令行技巧

2015-11-02 09:25:07

jQuery代碼片段

2021-05-23 16:23:22

Python 開發編程語言

2017-12-12 14:50:33

數據庫MySQL命令

2023-12-27 14:04:00

Spring框架參數

2023-06-04 17:13:26

.NET開發應用程序

2022-12-06 17:18:42

2022-02-22 13:14:30

Vue自定義指令注冊
點贊
收藏

51CTO技術棧公眾號

久久精品午夜一区二区福利| 免费不卡欧美自拍视频| 小黄鸭精品aⅴ导航网站入口| 99免费看香蕉视频| av一区二区高清| 欧美视频13p| 国产99视频精品免费视频36| 欧美日韩亚洲国产| 欧美亚洲综合另类| 欧美日韩一区久久| 影音先锋可以看的网站| 久久久久国产免费免费| 99久久无色码| 欧美日韩hd| 91精品免费| 六九午夜精品视频| 男男成人高潮片免费网站| 国精一区二区三区| 国产成年精品| 国产精品午夜在线| 三年中文高清在线观看第6集| 日韩中出av| 亚洲国产精品va在线观看黑人| 欧美三级理论片| 大胆日韩av| 亚洲综合自拍一区| 超碰影院在线| 91福利精品第一导航| 亚洲sss视频在线视频| 欧美亚洲另类在线| 美女av网站| 精品日本一线二线三线不卡| 无码精品国产一区二区三区免费| 日韩精品免费观看视频| 国产午夜三级一区二区三| 国产精品激情自拍| jizz内谢中国亚洲jizz| 欧美日韩国产中文字幕| 日韩国产精品毛片| 欧美日韩激情| 亚洲欧美在线播放| 91老司机福利在线| 中文字幕有码av| 黄色网络在线观看| 国产av麻豆mag剧集| 亚洲成人基地| 精品一区二区三区免费观看 | 国产成人精品免费久久久久| 久久不射影院| 欧美乱熟臀69xxxxxx| 一区一区三区| 日韩美女视频在线| 香蕉成人影院| 国产三级精品网站| 香蕉成人久久| 久草福利在线| 中文字幕日本不卡| 大j8黑人w巨大888a片| 久久亚洲精品伦理| 欧美制服第一页| 91精品店在线| 欧美精品免费在线| 久久国产成人午夜av影院| 亚洲精品日韩在线观看| 精品91在线| 久久综合婷婷综合| 久久成人免费电影| 免费的一级黄色片| jvid福利在线一区二区| 欧美精品生活片| 德国一级在线视频| 国产精品天天看| 亚洲激情图片| 你懂的一区二区三区| 国产精品美女久久久久av超清| 国产免费av国片精品草莓男男| 羞羞色国产精品| 久草在线新免费首页资源站| 日韩精品一区二区三区在线观看| 天堂av中文在线观看| 日韩精品视频在线| 人人超在线公开视频| 欧美日韩高清在线观看| 狠狠色丁香婷婷综合久久片| 国产综合色区在线观看| 999热视频在线观看| 日韩精品丝袜在线| 欧美天堂社区| 欧美大香线蕉线伊人久久| 国产精品88av| 一区二区三区性视频| 日韩在线不卡视频| 一区二区激情| 蜜臀av免费观看| 亚洲国产精品yw在线观看| 欧美大电影免费观看| 久久人91精品久久久久久不卡| 日韩免费一区| 少妇人妻互换不带套| 亚洲午夜日本在线观看| 日韩中文字幕| 国产精品免费看一区二区三区| 韩国一区二区视频| 免费观看成人高潮| 国产精品美女久久久久久免费| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 久久精品国产一区二区电影| 欧美日韩水蜜桃| 欧美国产二区| 黑人精品xxx一区| 欧美精品国产一区| 亚洲国产高清一区二区三区| 97超碰在线免费| 国产一区二区视频在线免费观看| 亚洲国产精品黑人久久久| 中日韩免视频上线全都免费| 九九爱精品视频| 精品亚洲欧美日韩| 国产99在线|中文| 欧洲精品在线观看| 91成人免费在线| 精品亚洲免费视频| 久久精品伊人| 亚洲精品国产首次亮相| 99视频在线观看地址| 中文字幕在线看| 日韩免费在线免费观看| 欧美激情一级二级| 日韩欧美电影一二三| 蜜桃精品视频在线| 日本亚洲视频| www.久久久久.com| 黄页在线免费看| 性欧美.com| 欧美极品一区| 色综合天天综合色综合av| 日韩专区精品| 激情亚洲另类图片区小说区| 日韩国产激情| 秋霞a级毛片在线看| 日本视频一二区| 中文字幕日韩一区二区三区| 欧美精品在线免费播放| 天天影视涩香欲综合网| 欧美亚洲一区三区| 欧美日韩国产综合久久| 久久不见久久见免费视频7| 色吊丝在线永久观看最新版本| 国产欧美日韩精品丝袜高跟鞋| 96pao国产成视频永久免费| 国产精品wwwwww| 精品粉嫩超白一线天av| 国产精品激情偷乱一区二区∴| 天天影视欧美综合在线观看| 日韩另类在线| 已婚少妇美妙人妻系列| 精品一区在线播放| 国产精品观看在线亚洲人成网| 日韩视频中午一区| 大桥未久av一区二区三区| 免费看日本一区二区| 亚洲久久久久| 国产寡妇亲子伦一区二区| 欧美色区777第一页| 色综合久综合久久综合久鬼88| 国产精品久久久久9999| 日韩视频 中文字幕| 国产又粗又猛又爽又黄的网站| 二级片在线观看| 麻豆一区二区三区在线观看| 色乱码一区二区三区熟女| 蜜桃狠狠色伊人亚洲综合网站| 欧美日韩精品久久久免费观看| 日韩最新中文字幕| eeuss一区二区三区| 久久涩涩网站| 欧美国产日韩激情| 在线成人动漫| 午夜在线小视频| 亚洲伦理影院| 羞羞答答一区二区| 不卡免费追剧大全电视剧网站| 专区另类欧美日韩| 欧美成人a在线| 亚洲国产天堂久久综合网| 久久久久久久久久国产精品| 一区二区成人国产精品| 一级片在线免费看| 国产成人在线视频网址| 国产精品成av人在线视午夜片 | 久久国产精品高清一区二区三区| 岛国视频免费在线观看| www在线观看播放免费视频日本| 香港欧美日韩三级黄色一级电影网站| 国产传媒日韩欧美成人| 色综合久久天天综合网| 欧美不卡视频一区| 欧美日韩视频在线第一区 | 91成人性视频| 成熟丰满熟妇高潮xxxxx视频|