ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「name」という名前のグローバル変数を使用すると予期しない動作が発生するのはなぜですか?
JavaScript オブジェクトの "name" の奇妙なケース
JavaScript オブジェクトを操作するとき、グローバルを使用すると予期しない動作が発生する可能性があります。 「name」という名前の変数。この変数は、さまざまなコンテキストで固有の意味を持ちます。
次のコード スニペットを考えてみましょう:
var name = {}; name.FirstName = 'Tom'; alert(name.FirstName); alert(name); // Weird value
Chrome では、alert(name.FirstName) は unknown を返しますが、IE では期待どおりに機能します。そしてFirefox。さらに、alert(name) は奇妙な値を生成し、その動作について疑問が生じます。
この問題の原因は、JavaScript のグローバル スコープにおける "name" プロパティの特別な役割にあります。 window.name プロパティは、現在のウィンドウまたはフレームの名前を表す文字列であることを目的としています。 「name」という名前のグローバル変数を作成するとき、暗黙的に window.name を文字列に設定し、基本的に特別な値を上書きします。
その後、name.FirstName にアクセスしようとすると、プロパティを取得しようとします。オブジェクトではなくプリミティブ (文字列) であるため、未定義となります。この動作は Chrome に特有のもので、グローバルな "name" 変数を文字列にキャストすることで window.name の本来の目的を強制します。
この問題を回避するには、グローバル変数として "name" を使用しないでください。予期せぬ結果を招く可能性があるため。この変数を回避することで、コードが異なるブラウザー間でも一貫して動作することを保証できます。
以上がJavaScript で「name」という名前のグローバル変数を使用すると予期しない動作が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。