0

この行を入力したとき、Chrome 13 で開発者ツールを使用していました。

var location = "Hello";

Enter キーを押すと、ページが変わり、404 エラーが発生しました。アドレスバーHelloが最後のアドレスに追加されました。

http://www.google.com/こんにちは

過去にまったく同じ行を Chrome に入力したことがありますが、同じ問題は発生していません。場所は だと思いましたwindow.location

何かが変わったのですか、それともこれまで気づかなかったのですか?

4

2 に答える 2

2

Chrome のスコープ ルールが変更された可能性があります。varコンソールをウィンドウ スコープとして扱うべきか、謎のコンソール スコープとして扱うべきかは、私にはわかりません。

location という名前の変数を作成する場合は、即時関数を使用するなどして、安全なスコープを作成する必要があります。例えば

(function(){
  var location = "hello";  // safe
})();
于 2011-09-16T18:48:34.993 に答える
2

開発者ツールのコンテキストがwindow. 入力thisして内容を確認します。おそらくwindowです。

したがって、次のように入力すると:

var location = "Hello";

既に存在するグローバル スコープ内の変数を再定義しようとしています。ブラウザのグローバル スコープはwindowオブジェクトです。したがって、locationグローバル スコープでは と同じwindow.locationです。

すでに存在するオブジェクトを ( を使用して) 再定義しようとしてvarも、javascript ではエラーになりません。var宣言を無視して代入を行うだけです。そして、ロケーション オブジェクトに文字列を割り当てると、新しい Web ページに移動します。

于 2011-09-16T18:56:05.080 に答える