js オプション連鎖演算子の使用

js オプション連鎖演算子の使用

序文

オプションの連鎖演算子 (?.) を使用すると、チェーン内の各参照が有効であることを明示的に検証しなくても、チェーンの末尾にあるプロパティの値を読み取ることができます。違いは、参照が null または undefined の場合、エラーは発生せず、式の短絡戻り値は undefined になることです。関数呼び出しで使用する場合、指定された関数が存在しない場合は undefined が返されます。

オプションの連鎖演算子を使用すると、存在しない可能性のあるオブジェクト プロパティにアクセスしようとするときに、式のルートが短く簡潔になります。オプションの連鎖演算子は、どのプロパティが存在する必要があるか不明な場合に、オブジェクトの内容を調べるときにも役立ちます。

オプションの連鎖演算子 (?.)

文法

オブジェクト?.prop
オブジェクト?.[式]
関数?.(引数)

説明する

オプションの連鎖演算子は、接続されたオブジェクトを介して渡される参照または関数が未定義または null である可能性がある場合に、接続されたオブジェクトの値へのアクセスを簡素化する方法を提供します。
たとえば、ネストされた構造を持つオブジェクト obj を考えてみましょう。オプションの連鎖がない場合、深くネストされたサブプロパティを検索するときは、それらの間の参照を検証する必要があります。次に例を示します。

ネストされたProp = obj.first && obj.first.secondとする

エラーを回避するには、obj.first.second にアクセスする前に、obj.first の値が null でも undefined でもないことを確認してください。 obj.first を検証せずに単に obj.first.second にアクセスすると、エラーがスローされる可能性があります。
オプションの連鎖演算子 (?.) を使用すると、obj.first.second にアクセスする前に obj.first の状態を明示的に確認し、短絡評価を使用して最終結果を取得する必要がなくなります。

nestedProp = obj.first?.second とします。

. 演算子の代わりに ?. 演算子を使用すると、JavaScript は obj.first.second にアクセスする前に、obj.first が null でも undefined でもないことを暗黙的に確認します。 obj.first が null または undefined の場合、式は計算を省略し、直接 undefined を返します。

これは次の式と同等ですが、一時変数は実際には作成されません。

temp = obj.first とします。
nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second) とします。 

使用

babel コンパイラでは連鎖可能な演算子を使用できます。

バベル

yarn を @babel/plugin-proposal-optional-chaining --dev に追加します

.babelrcファイルを追加する

{
  "プラグイン": ["@babel/プラグイン提案オプションチェーン"]
}

create-react-appで使用する

デフォルトでは、create-react-app は babel 構成の変更を許可しません。ここでは、デフォルトの構成を補足できるように 2 つの追加モジュールをインストールする必要があります。

yarn をカスタマイズ-cra react-app-rewired --dev に追加します

config-overrides.js ファイルを追加する

const { useBabelRc, override } = require('customize-cra');
モジュール.exports = override(useBabelRc());

package.json を変更する

「スクリプト」: {
  "開始": "react-app-rewired 開始",
  "ビルド": "react-app-rewired ビルド",
  "テスト": "react-app-rewired テスト --env=jsdom"
}

エスリント

babel コンパイラをインストールすると、?. 演算子を使用できるようになります。ただし、eslint を使用する場合は、この新しい構文を認識するために babel-eslint をインストールする必要があります。

yarn に babel-eslint --dev を追加します

.eslintrc ファイルを追加する

{
  "パーサー": "babel-eslint",
  「ルール」: {
    "厳密": 0
  }
}

vscodeでの使用

vscode の 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 オプション連鎖演算子のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript の「&&」および「||」演算子の包括的な分析 (要約)
  • JavaScript のプラス記号 (+) 演算子の魔法のような効果
  • JavaScript 削除演算子のアプリケーション例
  • JavaScript 演算子 (~、&、|、^、<<、>>) の使用例
  • JavaScript の delete 演算子で削除できないオブジェクトを解析する
  • js 演算子の概要
  • JavaScript スプレッド演算子の詳細な説明
  • JavaScript ブール演算子の解析 && || !

<<:  Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

>>:  MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

推薦する

リモート接続を許可するようにMySQLを変更する方法

MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...

MySQL フルテキスト検索の中国語ソリューションとサンプルコード

MySQL 全文検索中国語ソリューション最近、会社のプロジェクトで、データベースで中国語を検索する機...

Vue3はサイドナビゲーションテキストスケルトン効果コンポーネントをカプセル化します

Vue3プロジェクトのカプセル化サイドナビゲーションテキストスケルトン効果コンポーネント-グローバル...

Vueのカスタムディレクティブの詳細なガイド

目次1. カスタム指示とは何ですか? 2. 指示をカスタマイズする方法フック機能3. 応用シナリオ入...

MySQL マルチインスタンス構成のアプリケーションシナリオ

目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...

MySQL の自動増分主キーが使い果たされた場合の対処方法

面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

vue3 で vue-router を使用するための完全な手順

序文ルーティングの管理は、ほとんどのシングルページ アプリケーションにとって不可欠な機能です。 Vu...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

MySQLバッチは特定のフィールドのスペースを削除します

Mysql で特定のフィールドからスペースを一括削除する方法はありますか?文字列の前後のスペースだけ...

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

MySQL 5.7 でデータベースのデータ保存場所を変更する方法

MySQL データベースに保存されるデータが徐々に増加すると、元のストレージ領域がいっぱいになり、M...

HTML ページジャンプコード

次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...

Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

目次1.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...

N キロメートル以内のデータを検索する MySQL の簡単な例

地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...