Javascript ES6 spread operator on undefined [duplicate] (未定義)
2023-09-25 22:18:22
質問
reactアプリの開発中に、コンポーネントに条件付きpropを送る必要があったので、それを行うパターンをどこかで見つけました。
もし私がタイプすると
console.log(...undefined) // Error
console.log([...undefined]) // Error
console.log({...undefined}) // Work
未定義に対してスプレッド演算子を実行するとエラーが発生しますが、未定義がオブジェクトの中にある場合は、空のオブジェクトが返されます。
私はこの動作に関して非常に驚いています。これは本当にあるべき姿なのでしょうか?
どのように解決するのですか?
この動作は、次のようなことをするときに便利です。 任意拡散 :
function foo(options) {
const bar = {
baz: 1,
...(options && options.bar) // options and bar can be undefined
}
}
そして、さらに良くなるのが
オプションの連鎖
にある
Stage 4
であり、(すでに
が TypeScript で利用可能です。
3.7+):
function foo(options) {
const bar = {
baz: 1,
...options?.bar //options and bar can be undefined
}
}
一念 配列への展開ができないのが残念です。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]