JavaScript の name 変数は少し理解するのが難しいようです。
怪我咯
怪我咯 2017-05-19 10:45:19
0
5
505

この問題は、name に値を割り当てた後、ページをどのように更新しても値が変わらないという事実から発生します。これにより、js 変数のライフサイクルに少し疑問を感じます。私も偶然遭遇しました。前のテスト コードでは、名前が定義されておらず、最初に値が代入されていませんでしたが、名前の typeof は文字列でした。後でウィンドウオブジェクトを出力してみると、オブジェクトには属性名があり、空の文字列であることがわかり、理解しやすいです。しかし、なぜ代入後、この値は空の文字列に初期化されず、常に存在するのでしょうか?

リーリー
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(5)
某草草

名前を割り当てると、name='hello word'; それは実際には window.name='hello world'; となり、window.name の定義を見ると、それはウィンドウの名前を取得/設定します。この時点では、このウィンドウに名前を設定しているため、どのように更新してもウィンドウは閉じず、名前はそのまま残ります。これは JS 変数のライフサイクルの問題ではありません

いいねを押す +0
阿神

問題は、ページを更新すると、それが新しい実行コンテキストになるため、それに割り当てた値がすでに以前の実行コンテキストにあるということです。新しく更新されたコンテキストにはどのようにして反映されるのでしょうか。 ? 役割を果たす?

いいねを押す +0
阿神

おお、こんな状況は初めて見た、onloadにしておけばこのような状況にはならないだろう、専門家の指導を待つ。

いいねを押す +0
迷茫

試してみたところ、確かにウィンドウオブジェクトに属性として値が割り当てられ、F5で更新しても消去されません

以下は window オブジェクトの紹介です: すべての JavaScript グローバル オブジェクト、関数、変数は自動的に window オブジェクトのメンバーになります。

Window オブジェクト
すべてのブラウザは window オブジェクトをサポートしています。ブラウザウィンドウを表します。
すべての JavaScript グローバル オブジェクト、関数、変数は自動的に window オブジェクトのメンバーになります。
グローバル変数はウィンドウオブジェクトのプロパティです。
グローバル関数はウィンドウオブジェクトのメソッドです。

たとえば、グローバル変数 name1 を定義すると、それは window オブジェクト内でも見つけることができます。

window オブジェクト。ブラウザ ウィンドウを表します。 したがって、ウィンドウが閉じられていない限り、F5 キーを更新しても、内部の値 (必要な場合はウィンドウ オブジェクト自体のプロパティ) が常に存在します。

突然、window.name を使用してクロスドメイン データ送信を実現できることに気づきました。

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

コードが次のように変更されているため、jsの自動変換タイプとtypeofピットに関係があるのではないかと思います:

リーリー

ログ出力は依然として string であるため、神からの割り当ての問題は除外できます。


今 MDN をチェックしたところ、window本身有个name 属性 (ポータル)...MDN ではあまり情報が提供されていなかったので、Xia Ruan 氏の「JavaScript 標準リファレンス チュートリアル」の関連する手順を参照してみました。

name変数が定義されていない場合、最上位の変数が直接アクセスされます window.nameこれは文字列です...おそらくこれが意味するものでしょうか?

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