検索

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

JavaScriptのスコープチェーン

リーリー

結果が world ではなく hello になる理由

阿神阿神2741日前547

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

  • 滿天的星座

    滿天的星座2017-05-19 10:30:18

    リーリー

    返事
    0
  • PHPz

    PHPz2017-05-19 10:30:18

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-05-19 10:30:18

    obj オブジェクトに書かれた str:"world" は obj.str="world" を意味するためです。これは変数ではなくプロパティです。最後に実行した obj.fun() で表示されるのは、属性ではなく str 変数です (もちろん、これはグローバル ウィンドウの属性でもあります)。それでわかりましたか? this.str または obj.str にアラートを付けると、「world」を取得できます。

    返事
    0
  • ringa_lee

    ringa_lee2017-05-19 10:30:18

    変数 str は実際には window の属性であり、obj オブジェクトの str 属性とは何の関係もありません。これにはスコープチェーンの問題は関係ありません。次のことを理解してください:

    リーリー

    この例では、関数変更で最初にグローバル変数 str が再割り当てされます。alert(str) を実行する場合は、独自のスコープ チェーンの開始点、つまり独自の変数内で変数 str を探します。オブジェクトが見つからない場合は、上に進みます。レベル 1 の検索で str 変数が見つかりましたが、この時点では str が world に再割り当てされているため、world が表示されます。

    返事
    0
  • PHP中文网

    PHP中文网2017-05-19 10:30:18

    リーリー

    分かりますか?

    返事
    0
  • キャンセル返事