国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

js 可選鏈操作符的使用

瀏覽:97日期:2024-03-23 17:48:58
前言

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

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

可選鏈操作符(?.)

語法

obj?.propobj?.[expr]func?.(args)描述

通過連接的對象的引用或函數(shù)可能是 undefined 或 null 時,可選鏈操作符提供了一種方法來簡化被連接對象的值訪問。比如,思考一個存在嵌套結構的對象 obj。不使用可選鏈的話,查找一個深度嵌套的子屬性時,需要驗證之間的引用,例如:

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

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

let nestedProp = obj.first?.second

通過使用 ?. 操作符取代 . 操作符,JavaScript 會在嘗試訪問 obj.first.second 之前,先隱式地檢查并確定 obj.first 既不是 null 也不是 undefined。如果obj.first 是 null 或者 undefined,表達式將會短路計算直接返回 undefined。

這等價于以下表達式,但實際上沒有創(chuàng)建臨時變量:

let temp = obj.firstlet nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second) 使用

我們可以通過babel編譯器來使用可以鏈操作符。

babel

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

添加.babelrc文件

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

在create-react-app使用

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

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的話,你就需要安裝babel-eslint來識別這種新語法。

yarn add babel-eslint --dev

添加.eslintrc文件

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

在vscode中使用

vscode的js驗證器目前并不能識別?.操作符,所以會有錯誤警告:

js 可選鏈操作符的使用

解決錯誤警告:

安裝vscode擴展ESLint,在擴展商店搜素并安裝ESLint。

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

{ 'eslint.alwaysShowStatus': true, 'eslint.autoFixOnSave': true, 'javascript.validate.enable': false, // 主要是這個,關閉vscode的js驗證器 '[javascript]': { 'editor.formatOnSave': false, }, '[javascriptreact]': { 'editor.formatOnSave': false, },}

來源: 可選鏈操作符

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 欧美日韩一区二区三区在线播放 | 亚洲欧美成人综合久久久 | 久久综合精品不卡一区二区 | 久久93精品国产91久久综合 | 日本一区二区三区不卡在线视频 | 亚洲福利国产精品17p | 久久99一区| 成熟的女性强烈交性视频 | 国产在线视频精品视频免费看 | 亚洲日本va午夜中文字幕 | 国产女厕偷窥系列在线视频 | 男人的天堂视频在线观看 | 亚洲日本精品 | 一区二区在线播放福利视频 | 99久久精品视香蕉蕉er热资源 | 国产一级片在线 | 亚洲精品在线免费观看视频 | 国产99久久精品 | 精品中文字幕一区在线 | 国产大学生自拍 | 久久国产精品岛国搬运工 | 亚洲三级免费 | 亚洲精品一区二区三区www | 香蕉依依精品视频在线播放 | 欧美性色一级在线观看 | 大片刺激免费播放视频 | 人碰人操 | 国产三级日本三级日产三 | 九九国产精品视频 | 怡红院久久 | 国产精品视频久久久久久 | 久久免费精彩视频 | 一级成人 | 久久久久久久久久免免费精品 | 亚洲天堂视频网 | 亚洲国产日韩综合久久精品 | 亚洲欧美一区二区三区久久 | 中文字幕在线观看网址 | 337p粉嫩日本亚洲大胆艺术照 | 天堂素人搭讪系列嫩模在线观看 | 特黄特a级特别特级特毛片 特黄特黄 |