2016-08-01 14 views
1

私はライン持っページロード時: <script>HUD = "hello";</script>を、私はHUD内のページ、オープンデベロッパーツール、コンソールに行く」とタイプを開く - 私はその後、私はリロードなぜオブジェクトがChrome DevToolsに存在しないのですか?

VM331:1 Uncaught ReferenceError: HUD is not defined(…)

を見ますページには、開いているデベロッパーツールを保ち、再度HUDを入力してください - 今、それが存在し、版画 "ハロー"

<!DOCTYPE html> 
 
<html> 
 
<head lang="en"> 
 

 
    <script> 
 
     var HUD = "hello"; 
 
     console.log(HUD); 
 
    </script> 
 
</head> 
 
<body> 
 
\t Open console and enter HUD - is it there? 
 
</body> 
 
</html>

スニペットを実行し、このようにチェックします。時にはHUDが存在することもありますが、時にはHUDが存在しないこともあります。ここでの問題は、この役に立たない変数は、JavaScriptエンジン(this behavior is mentioned in the console documentation)だけ離れて最適化することができるということである you can use HUD, but it still does not exist for DevTools

+0

HUDは文字列ですか?文字列に何をすると思いますか? – Liam

+1

コンソールに「hello」と表示されるはずです。 – shal

+0

何らかの理由で「HUDが定義されていません」と表示されることがあります。 – shal

答えて

5

:私はなぜ...

はポイントを証明JSフィドルのスクリーンショットを参照してくださいだろうか。

それを修正し、その除去を防ぐために、いくつかの解決策:

  • windowプロパティとして明示的に設定します。window.HUD = "hello";
  • はノーオペレーション操作でそれを含める:(function(v){ if (!v) die(); })(HUD);(この1つはより危険であるとして、賢くエンジンは、それはまだ実際には使わない検出することができた)これはおそらく本当の問題ではないことを

注:この変数は有用であることが開始されると(つまり、それは潜在的にコードのどこかで使われている)、第eエンジンはそれをもはや削除しないので、トリックなしにコンソールで見ることができます。

+0

あなたの答えは理にかなっています。あなたがフィドルでそれを証明していただければ幸いです。私はhttps://jsfiddle.net/jm7e57jL/2/を試しましたが、運はありません:( –

+1

@GopinathShiva Fiddlesはフレームになっていますので、いくつかのウィンドウがあります。こちらから試してみてください:https://dystroy.org/pub/test.html –

+0

あなたは、var(グローバルスコープ)を使ってグローバル変数を宣言する例を提供してもらえますか?質問の目的を完了させるには –

関連する問題