[解決済み] var { ...} の中括弧は何を意味するのでしょうか?} = ...`文は何をするのですか?
2022-06-30 12:29:30
質問
これが Mozilla 固有の JS 構文であるかどうかはわかりませんが、私はしばしばこの方法で宣言された変数を見つけました。 アドオン SDK ドキュメント :
var { Hotkey } = require("sdk/hotkeys");
と、様々なクロームのJavascriptで(
let
ステートメントが使用されています。
var
),
let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
私はこの構文が非常にわかりにくいことに気づきましたが、両方の構文に関するドキュメントを見つけることができません。 MDN .
どのように解決するのですか?
どちらもJavaScript 1.7の機能です。最初のものは ブロックレベル変数 :
let
では、変数が使用されるブロック、文、または式にスコープを限定して変数を宣言することができます。これはvar
キーワードとは異なり、ブロックスコープに関係なくグローバルに、または関数全体に対してローカルに変数を定義します。
2つ目は 構造改革 :
デストラクチャリング代入は、配列やオブジェクトのリテラルの構築を反映した構文を使って、配列やオブジェクトからデータを抽出することを可能にします。
...
構造体解除の代入でできる特に便利なことは、1つの文で構造体全体を読み取ることですが、この後の例でいっぱいのセクションで示すように、構造体解除でできる面白いことはたくさんあります。
Pythonに慣れている人にとっては、この構文に似ています。
>>> a, (b, c) = (1, (2, 3))
>>> a, b, c
(1, 2, 3)
最初のコードの塊は、略記です。
var {Hotkey: Hotkey} = require("sdk/hotkeys");
// Or
var Hotkey = require("sdk/hotkeys").Hotkey;
2番目のコードチャンクを次のように書き換えることができます。
let Cc = Components.classes;
let Ci = Components.interfaces;
let Cr = Components.results;
let Cu = Components.utils;
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
JSアレイループと効率解析の比較
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。