<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
undefined和null是兩個比較特殊的資料型別,是不能用點操作符去存取屬性的,否則將會報錯
let a; console.log(a?.name); //undefined console.log(a.name); //報錯
let obj = {}; console.log(obj.name); //undefined console.log(obj?.name?.a); //undefined console.log(obj.name.a); //報錯
相同點:
?? 和 || 的用法相同,都是前後是值,中間用符號連線,根據前面的值來判斷最終是返回前面的值還是後面的值。
A ?? B
A || B
不同點:
判斷的方法不同:
使用 ?? 時,只有A為 null 或者 undefined 時才會返回 B;
使用 || 時,A會先轉化為布林值判斷,為true時返回A , false 返回B
// ?? console.log(undefined ?? 2); // 2 console.log(null ?? 2); // 2 console.log(0 ?? 2); // 0 console.log("" ?? 2); // '' console.log(true ?? 2); // true console.log(false ?? 2); // false // || console.log(undefined || 2); // 2 console.log(null || 2); // 2 console.log(0 || 2); // 2 console.log("" || 2); // 2 console.log(true || 2); // true console.log(false || 2); // 2
只有當左側為null
或者undefined
時,才會返回右側的值
?.
允許讀取連線物件鏈深處的屬性的值,而不必明確驗證鏈中的每個參照是否有效。
?.
操作符的功能類似於. 鏈操作符,不同之處在於,在參照為空,即 null
或者 undefined
的情況下不會引起錯誤,該表示式短路返回值。
const obj = { a: { b: [{ name: "obj" }] } }; // 原本的寫法 console.log(obj && obj.a && obj.a.b.length && obj.a.b[0].name); //obj // 可選鏈寫法 console.log(obj?.a?.b?.[0]?.name); // obj console.log(obj?.b?.c?.d); // undefined
?.可以和 ?? 運運算元結合使用
const obj = { a: { name: "obj" } }; console.log(obj?.a?.b ?? "hello world"); // hello world
當??=左側的值為null、undefined的時候,才會將右側變數的值賦值給左側變數.其他所有值都不會進行賦值
let a = "你好"; let b = null; let c = undefined; let d = 0; let e = ""; let f = true; let g = false; console.log((b ??= a)); // 你好 console.log((c ??= a)); // 你好 console.log((d ??= a)); // 0 console.log((e ??= a)); // '' console.log((f ??= a)); // true console.log((g ??= a)); // false console.log(b); // 你好 console.log(c); // 你好 console.log(d); // 0 console.log(e); // '' console.log(f); // true console.log(g); // false
鏈判斷運運算元?. 允許開發人員讀取深度巢狀在物件鏈中的屬性值,而不必驗證每個參照。當參照為空時,表示式停止計算並返回 undefined。
let travelPlans = { destination: 'DC', monday: { location: 'National Mall', budget: 200, host: null } } let res = travelPlans?.tuesday?.location ?? "locahost"; // => locahost let res2 = travelPlans?.host; // => undefined
這個是什麼操作呢??
這個location是哪裡來的呢?這個tuesday又是哪裡來的呢?就算不是外面的travelPlans這個物件裡也沒有location和tuesday啊!!!經過詢問大佬後得
let res = travelPlans?.tuesday?.location; <=等價=> let res = travelPlans&& travelPlans.tuesday&& travelPlans.tuesday.location
作用就是判斷這個物件(travelPlans)下的(tuesday)下的(location)是否為null或者undefined,當其中一鏈為null或者undefined時就返回undefined,這樣即使中間缺少一個屬性也不會報錯,雙問號後面接的就是預設值。
到此這篇關於JavaScript中? ?、??=、?.和 ||區別的文章就介紹到這了,更多相關JS中? ?和??=和?.和 ||區別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45