JavaScript がグローバル オブジェクトで変数を宣言すると、その変数はグローバル オブジェクトと同じ名前のプロパティになりますが、関数で宣言するとそうではありません。なぜですか?
仅有的幸福
仅有的幸福 2017-06-26 10:58:35
0
7
882

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

仅有的幸福
仅有的幸福

全員に返信(7)
洪涛

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

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

いいねを押す +0
我想大声告诉你

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

いいねを押す +0
巴扎黑

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

リーリー
いいねを押す +0
大家讲道理

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

リーリー

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

いいねを押す +0
我想大声告诉你

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

いいねを押す +0
淡淡烟草味

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

いいねを押す +0
typecho

機能スコープ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!