JavaScriptのスコープチェーン
阿神
阿神 2017-05-19 10:28:18
0
5
568
リーリー

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

阿神
阿神

闭关修行中......

全員に返信(5)
滿天的星座

リーリー

いいねを押す +0
PHPzhong

リーリー

いいねを押す +0
小葫芦

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

いいねを押す +0
左手右手慢动作

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

リーリー

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

いいねを押す +0
洪涛

リーリー

分かりますか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート