検索

ホームページ  >  に質問  >  本文

JavaScript がグローバル オブジェクトで変数を宣言すると、その変数はグローバル オブジェクトと同じ名前のプロパティになりますが、関数で宣言するとそうではありません。なぜですか?

JavaScript では、グローバル変数がグローバルに宣言されると、それは同じ名前のグローバル オブジェクトのプロパティになります。しかし、ローカル変数は関数内で宣言しても関数(オブジェクト)の属性にはならず、「関数名.属性名」で宣言する必要があるのですが、これはなぜでしょうか?

仅有的幸福仅有的幸福2788日前968

全員に返信(7)返信します

  • PHP中文网

    PHP中文网2017-06-26 11:00:35

    次のように理解できます:

    関数内で宣言された変数は、関数オブジェクトではなく、関数実行コンテキストオブジェクトに属します
    グローバル環境で宣言された変数は、グローバル実行コンテキストオブジェクトに属し、このコンテキストオブジェクトがグローバル環境オブジェクトです

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-26 11:00:35

    理由はない、これがルールだ。

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-26 11:00:35

    歴史の問題。混乱を避けるために厳密モードを使用することをお勧めします。

    リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-06-26 11:00:35

    これが意味するなら
    `function test(){

    リーリー

    }`
    //更新、エラー修正。
    質問者さんは基本をよく見ています。

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-26 11:00:35

    jsはとても柔軟な関数変数のスコープ問題だと思います^~^ ^~^

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 11:00:35

    JavaScript では、グローバル変数がグローバルに宣言されると、同じ名前のグローバル オブジェクトのプロパティになります。ローカル変数は関数内で宣言されると、関数の属性であるローカル オブジェクトになるため、最初に関数にグローバルにアクセスしてから、関数内のローカル変数にアクセスする必要があります。

    返事
    0
  • typecho

    typecho2017-06-26 11:00:35

    機能スコープ

    返事
    0
  • キャンセル返事