欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js 可選鏈操作符的使用

 更新時(shí)間:2021年06月01日 15:02:59   作者:FruitBro  
可選鏈操作符(?.)允許讀取位于鏈接對(duì)象鏈身處的屬性的值,本文就詳細(xì)的介紹一下,感興趣的小伙伴們可以參考一下

前言

可選鏈操作符(?.)允許讀取位于鏈接對(duì)象鏈身處的屬性的值,而不必明確驗(yàn)證鏈中的每個(gè)引用是否有效。不同之處在于,在引用為空(null或者undefined)的情況下不會(huì)引起錯(cuò)誤,該表達(dá)式短路返回值是undefined。與函數(shù)調(diào)用一起使用時(shí),如果給定的函數(shù)不存在,則返回undefined。

當(dāng)嘗試訪(fǎng)問(wèn)可能不存在的對(duì)象屬性時(shí),可選鏈操作符將會(huì)使表達(dá)式根更短、更簡(jiǎn)明。在探索一個(gè)對(duì)象的內(nèi)容時(shí),如果不能確定哪些屬性必定存在,可選鏈操作符也是很有幫助的。

可選鏈操作符(?.)

語(yǔ)法

obj?.prop
obj?.[expr]
func?.(args)

描述

通過(guò)連接的對(duì)象的引用或函數(shù)可能是 undefined 或 null 時(shí),可選鏈操作符提供了一種方法來(lái)簡(jiǎn)化被連接對(duì)象的值訪(fǎng)問(wèn)。
比如,思考一個(gè)存在嵌套結(jié)構(gòu)的對(duì)象 obj。不使用可選鏈的話(huà),查找一個(gè)深度嵌套的子屬性時(shí),需要驗(yàn)證之間的引用,例如:

let nestedProp = obj.first && obj.first.second

為了避免報(bào)錯(cuò),在訪(fǎng)問(wèn)obj.first.second之前,要保證 obj.first 的值既不是 null,也不是 undefined。如果只是直接訪(fǎng)問(wèn) obj.first.second,而不對(duì) obj.first 進(jìn)行校驗(yàn),則有可能拋出錯(cuò)誤。
有了可選鏈操作符(?.),在訪(fǎng)問(wèn) obj.first.second 之前,不再需要明確地校驗(yàn) obj.first 的狀態(tài),再并用短路計(jì)算獲取最終結(jié)果:

let nestedProp = obj.first?.second

通過(guò)使用 ?. 操作符取代 . 操作符,JavaScript 會(huì)在嘗試訪(fǎng)問(wèn) obj.first.second 之前,先隱式地檢查并確定 obj.first 既不是 null 也不是 undefined。如果obj.first 是 null 或者 undefined,表達(dá)式將會(huì)短路計(jì)算直接返回 undefined。

這等價(jià)于以下表達(dá)式,但實(shí)際上沒(méi)有創(chuàng)建臨時(shí)變量:

let temp = obj.first
let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second) 

使用

我們可以通過(guò)babel編譯器來(lái)使用可以鏈操作符。

babel

yarn add @babel/plugin-proposal-optional-chaining --dev

添加.babelrc文件

{
  "plugins": ["@babel/plugin-proposal-optional-chaining"]
}

在create-react-app使用

默認(rèn)情況下create-react-app,不允許修改babel配置,這里我們需要安裝兩個(gè)附加模塊以允許補(bǔ)充默認(rèn)配置。

yarn add customize-cra react-app-rewired --dev

添加config-overrides.js文件

const { useBabelRc, override } = require('customize-cra');
module.exports = override(useBabelRc());

修改package.json

"scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build",
  "test": "react-app-rewired test --env=jsdom"
}

eslint

安裝babel編譯器后,就可以使用?.操作符了。但是如果你使用eslint的話(huà),你就需要安裝babel-eslint來(lái)識(shí)別這種新語(yǔ)法。

yarn add babel-eslint --dev

添加.eslintrc文件

{
  "parser": "babel-eslint",
  "rules": {
    "strict": 0
  }
}

在vscode中使用

vscode的js驗(yàn)證器目前并不能識(shí)別?.操作符,所以會(huì)有錯(cuò)誤警告:


解決錯(cuò)誤警告:

安裝vscode擴(kuò)展ESLint,在擴(kuò)展商店搜素并安裝ESLint。

修改vscode配置(.vscode/settings.json):

{
  "eslint.alwaysShowStatus": true,
  "eslint.autoFixOnSave": true,
  "javascript.validate.enable": false, // 主要是這個(gè),關(guān)閉vscode的js驗(yàn)證器
  "[javascript]": {
    "editor.formatOnSave": false,
  },
  "[javascriptreact]": {
  "editor.formatOnSave": false,
  },
}

 來(lái)源: 可選鏈操作符

到此這篇關(guān)于js 可選鏈操作符的使用的文章就介紹到這了,更多相關(guān)js 可選鏈操作符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 表單切換,用回車(chē)鍵替換Tab健(不支持IE)

    表單切換,用回車(chē)鍵替換Tab健(不支持IE)

    表單切換,用回車(chē)鍵替換Tab健。input的屬性tab的值表示切換的順序,這個(gè)值必須是連續(xù)的,并且不能重復(fù)。目前不支持IE
    2011-07-07
  • js與jQuery實(shí)現(xiàn)獲取table中的數(shù)據(jù)并拼成json字符串操作示例

    js與jQuery實(shí)現(xiàn)獲取table中的數(shù)據(jù)并拼成json字符串操作示例

    這篇文章主要介紹了js與jQuery實(shí)現(xiàn)獲取table中的數(shù)據(jù)并拼成json字符串操作,涉及javascript與jQuery針對(duì)HTML頁(yè)面table表格數(shù)據(jù)獲取、遍歷及json字符串拼接相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • opencv 識(shí)別微信登錄驗(yàn)證滑動(dòng)塊位置

    opencv 識(shí)別微信登錄驗(yàn)證滑動(dòng)塊位置

    這篇文章主要介紹了opencv 識(shí)別微信登錄驗(yàn)證滑動(dòng)塊位置及各自的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2018-08-08
  • js 學(xué)習(xí)筆記(三)

    js 學(xué)習(xí)筆記(三)

    JavaScript的對(duì)象基礎(chǔ) 本篇主要講解本地對(duì)象Array的各種方法。
    2009-12-12
  • 微信小程序scroll-x失效的完美解決方法

    微信小程序scroll-x失效的完美解決方法

    在微信小程序的文檔中,使用scroll-view標(biāo)簽,然后給它設(shè)置一個(gè)scroll-x就可以實(shí)現(xiàn)元素,橫向排列,可以左右滑動(dòng),但是在實(shí)際開(kāi)發(fā)中會(huì)遇到各種問(wèn)題,下面小編給大家?guī)?lái)了微信小程序scroll-x失效的完美解決方法,需要的朋友可以參考下
    2018-07-07
  • JavaScript自動(dòng)內(nèi)存管理與垃圾回收策略詳細(xì)分析講解

    JavaScript自動(dòng)內(nèi)存管理與垃圾回收策略詳細(xì)分析講解

    JS的垃圾回收機(jī)制是為了以防內(nèi)存泄漏,內(nèi)存泄漏的含義就是當(dāng)已經(jīng)不需要某塊內(nèi)存時(shí)這塊內(nèi)存還存在著,垃圾回收機(jī)制就是間歇的不定期的尋找到不再使用的變量,并釋放掉它們所指向的內(nèi)存。因?yàn)閮?nèi)存的大小是有限的,所以當(dāng)內(nèi)存不再需要的時(shí)候,我們需要對(duì)其進(jìn)行釋放
    2023-01-01
  • 詳解JavaScript的三種this指向方法

    詳解JavaScript的三種this指向方法

    這篇文章主要介紹JavaScript的三種this指向的方法:call()、bind()、apply(),文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • JavaScript利用canvas繪制流星雨效果

    JavaScript利用canvas繪制流星雨效果

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)JavaScript+canvas實(shí)現(xiàn)繪制流星雨效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • JavaScript 防抖和節(jié)流詳解

    JavaScript 防抖和節(jié)流詳解

    這篇文章主要介紹了JavaScript 防抖和節(jié)流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Google Map Api和GOOGLE Search Api整合實(shí)現(xiàn)代碼

    Google Map Api和GOOGLE Search Api整合實(shí)現(xiàn)代碼

    將GOOGLE MAP API 和 GOOGLE Search API 進(jìn)行整合,我用面向?qū)ο蟮姆绞綄?xiě)了一個(gè)類(lèi),通過(guò)傳一個(gè)經(jīng)緯度進(jìn)去,自動(dòng)通過(guò)GOOGLE LOCAL SEARCH獲取附近的相關(guān)信息。比如餐廳、景點(diǎn)等,反過(guò)來(lái)標(biāo)到地圖上,并可在任意容器內(nèi)顯示。
    2009-07-07

最新評(píng)論