亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解JS中???和?.?和||的區(qū)別

 更新時(shí)間:2022年06月15日 10:56:59   作者:葡萄葡萄豆干  
這篇文章主要介紹了詳解JS中???和?.?和||的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、?? 與 || 的區(qū)別

1)相同點(diǎn):

?? 和 || 的用法相同,都是前后是值,中間用符號(hào)連接,根據(jù)前面的值來(lái)判斷最終是返回前面的值還是后面的值。

  • One ?? Two
  • One || Two

2)不同點(diǎn):

判斷的方法不同:

  • 使用 ?? 時(shí),只有One為 null 或者 undefined 時(shí)才會(huì)返回 two;
  • 使用 || 時(shí),One會(huì)先轉(zhuǎn)化為布爾值判斷,為true時(shí)返回One , false 返回Two
?// ??
? undefined ?? 2?? ?// 2
? null ?? 2?? ??? ?// 2
? 0 ?? 2?? ??? ??? ?// 0
? "" ?? 2?? ??? ??? ?// ""
? true ?? 2?? ??? ?// true
? false ?? 2?? ??? ?// false


?// ||
? undefined || 2?? ?// 2
? null || 2?? ??? ?// 2
? 0 || 2?? ??? ??? ?// 2
? "" || 2?? ??? ??? ?// 2
? true || 2?? ??? ?// true
? false || 2?? ??? ?// 2

2、?? 和 ?. 的區(qū)別

1) 空值合并操作符 ??

只有當(dāng)左側(cè)為null 或者undefined 時(shí),才會(huì)返回右側(cè)的值。

const foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"
const baz = 0 ?? 42;
console.log(baz);
// expected output: 0
const nullValue = null;
const emptyText = ""; // 空字符串,是一個(gè)假值,Boolean("") === false
const someNumber = 42;

const valA = nullValue ?? "valA 的默認(rèn)值";
const valB = emptyText ?? "valB 的默認(rèn)值";
const valC = someNumber ?? 0;

console.log(valA); // "valA 的默認(rèn)值"
console.log(valB); // ""(空字符串雖然是假值,但不是 null 或者 undefined)
console.log(valC); // 42

2)可選鏈操作符 ?.

可選鏈操作符 ?. 允許讀取連接對(duì)象鏈深處的屬性的值,而不必明確驗(yàn)證鏈中的每個(gè)引用是否有效。?. 操作符的功能類似于. 鏈操作符,不同之處在于,在引用為空,即 null 或者 undefined 的情況下不會(huì)引起錯(cuò)誤,該表達(dá)式短路返回值。

const obj = { a: { b: [{ name: 'obj' }] } }

// 原本的寫(xiě)法
console.log(obj && obj.a && obj.a.b.length && obj.a.b[0].name)

// 可選鏈寫(xiě)法
console.log(obj?.a?.b?.[0]?.name); // obj
console.log(obj?.b?.c?.d) // undefined

例如上面的例子,?. 判斷的對(duì)象是 nullish (null 或者 undefined) ,表達(dá)式就會(huì)短路,不再往后執(zhí)行,返回 undefined

可以和 ?? 運(yùn)算符結(jié)合使用:

const obj = { a : { name: 'obj'} }

obj?.a?.b ?? 'hello world' // hello world

到此這篇關(guān)于詳解JS中? ?和?. 和||的區(qū)別的文章就介紹到這了,更多相關(guān)詳解JS中? ?和?. 和||的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論