JavaScript では、グローバル変数がグローバルに宣言されると、それは同じ名前のグローバル オブジェクトのプロパティになります。しかし、ローカル変数は関数内で宣言しても関数(オブジェクト)の属性にはならず、「関数名.属性名」で宣言する必要があるのですが、これはなぜでしょうか?
次のように理解できます:
関数内で宣言された変数は、関数オブジェクトではなく、関数実行コンテキストオブジェクトに属しますグローバル環境で宣言された変数は、グローバル実行コンテキストオブジェクトに属し、このコンテキストオブジェクトがグローバル環境オブジェクトです
理由はない、これがルールだ。
歴史の問題。混乱を避けるために厳密モードを使用することをお勧めします。
これが意味するなら `function test(){
}`//更新、エラー修正。 質問者さんは基本をよく見ています。
jsはとても柔軟な関数変数のスコープ問題だと思います^~^ ^~^
JavaScript では、グローバル変数がグローバルに宣言されると、同じ名前のグローバル オブジェクトのプロパティになります。ローカル変数は関数内で宣言されると、関数の属性であるローカル オブジェクトになるため、最初に関数にグローバルにアクセスしてから、関数内のローカル変数にアクセスする必要があります。
機能スコープ
次のように理解できます:
関数内で宣言された変数は、関数オブジェクトではなく、関数実行コンテキストオブジェクトに属します
グローバル環境で宣言された変数は、グローバル実行コンテキストオブジェクトに属し、このコンテキストオブジェクトがグローバル環境オブジェクトです
理由はない、これがルールだ。
歴史の問題。混乱を避けるために厳密モードを使用することをお勧めします。
リーリーこれが意味するなら
リーリー`function test(){
}`
//更新、エラー修正。
質問者さんは基本をよく見ています。
jsはとても柔軟な関数変数のスコープ問題だと思います^~^ ^~^
JavaScript では、グローバル変数がグローバルに宣言されると、同じ名前のグローバル オブジェクトのプロパティになります。ローカル変数は関数内で宣言されると、関数の属性であるローカル オブジェクトになるため、最初に関数にグローバルにアクセスしてから、関数内のローカル変数にアクセスする必要があります。
機能スコープ