ホームページ > ウェブフロントエンド > jsチュートリアル > 「var name = {}」を割り当てるとブラウザごとに異なる結果が生じるのはなぜですか?

「var name = {}」を割り当てるとブラウザごとに異なる結果が生じるのはなぜですか?

Susan Sarandon
リリース: 2024-12-20 03:08:08
オリジナル
980 人が閲覧しました

Why Does Assigning `var name = {}` Produce Different Results in Different Browsers?

JavaScript オブジェクトにおける変数 "name" の動作の不一致

JavaScript では、変数名には文字列値として特別な役割が割り当てられています。ウィンドウ オブジェクト (window.name)。この固有の特性は、name を JavaScript オブジェクトと組み合わせて使用​​する場合、予期しない動作を引き起こす可能性があります。

グローバル スクリプトとして実行される次のコード スニペットを考えてみましょう:

var name = {};
name.FirstName = 'Tom';
alert(name.FirstName);
ログイン後にコピー

Chrome では、このコードは次のように生成されます。アラートが表示されると「未定義」と表示されますが、IE と Firefox では FirstName プロパティにアクセスでき、「Tom」と表示されます。

この矛盾これは、Chrome が明示的に window.name を文字列に強制するために発生します。その結果、割り当て var name = {} は基本的にグローバル変数名 (window.name) を「[object Object]」に設定します。 name はプリミティブになったため、name.FirstName などのプロパティを設定しようとしても無効になります。

この問題を解決するには、name をグローバル変数として使用しないようにしてください。別の変数名を割り当てることで、window.name に関連付けられた固有の動作が誤ってトリガーされないようにすることができます。

以上が「var name = {}」を割り当てるとブラウザごとに異なる結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート