Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
代入 (=) 演算子は、変数またはプロパティに値を代入するために使用されます。代入式自体の値は、代入された値になります。これにより、複数の変数に 1 つの値を代入するために、複数の代入を連鎖させることができます。
有効な代入対象であり、識別子またはプロパティアクセサーなどです。構造分解パターンも使用できます。
yx に代入する値を指定する式です。
y の値です。
厳格モードで、スコープ内で宣言されていない識別子に代入した場合に発生します。
TypeError厳格モードで、変更不可能なプロパティに代入した場合に発生します。
代入演算子は、以下のような他の場所で、構文の区切り文字として使用される等号 (=) とは完全に異なります。
これらの場所はすべて、= の右側に代入式を受け入れます。したがって、複数の等号が連なっている場合は、次のように指定します。
これは次のものと同等です。
これは、 y は既存の変数である必要があり、 x は新しく宣言された const 変数であることを意味しています。 y には値 5 が代入され、 x は y = 5 の式(この値も 5)の値で初期化されます。 y が既存の変数でない場合、厳格モードでない場合はグローバル変数 y が暗黙的に作成されます。厳格モードでは、 ReferenceError が発生します。同じ宣言内で 2 つの変数を宣言するには、次のようにします。
代入式自体は右辺値として評価されるため、値のログ出力と変数への代入を同時に行うことができます。
グローバルオブジェクトは、スコープチェーンの最上位に位置します。名前を値に解決しようとすると、スコープチェーンが検索されます。つまり、グローバルオブジェクトのプロパティは、globalThis.、window.、global. で名前を修飾しなくても、すべてのスコープから簡単に参照できるということです。
グローバルオブジェクトに String プロパティ (Object.hasOwn(globalThis, "String")) があるため、次のコードを使用することができます。
したがって、最終的にはグローバルオブジェクトが、修飾されていない識別子が検索されます。globalThis.String と入力する必要はありません。修飾されていない String と入力するだけで済みます。この機能の概念の一貫性を高めるため、修飾されていない識別子への代入は、スコープチェーンに同じ名前の変数が宣言されていない場合、グローバルオブジェクトにその名前のプロパティを作成することを想定します(globalThis. は省略されます)。
厳格モードでは、厳格モードで修飾されていない識別子に代入すると、グローバルオブジェクトにプロパティが誤って作成されるのを避けるため、 ReferenceError が発生します。
なお、上記のことは、よく誤解されていることとは逆に、JavaScript には暗黙の変数や未宣言の変数はないことを意味します。 JavaScript は、グローバルオブジェクトとグローバルスコープを統合し、プロパティの作成時にグローバルオブジェクトの修飾子を省略できるようにしているだけです。
左辺は代入パターンにすることもできます。これにより、複数の変数に一度に代入することができます。
詳しくは、構造分解を参照してください。
| ECMAScript® 2027 Language Specification # sec-assignment-operators |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。