为什么Chrome DevTools中不存在对象?

时间:2016-08-01 10:49:11

标签: javascript google-chrome

当我加载页面时,我有一行: <script>HUD = "hello";</script>,然后打开页面,打开DevTools,转到Console&#34;并输入HUD - 我看到了

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

然后我重新加载页面,保持DevTools打开,然后再次进入HUD - 现在它存在并打印&#34;你好&#34;

&#13;
&#13;
<!DOCTYPE html>
<html>
<head lang="en">

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

运行代码段并以这种方式检查 - 有时HUD存在,有时则不存在。我想知道为什么......

查看js小提琴的截图,证明了这一点: you can use HUD, but it still does not exist for DevTools

1 个答案:

答案 0 :(得分:5)

这里的问题是这个无用的变量可能会被JavaScript引擎(this behavior is mentioned in the console documentation)优化掉。

修复它并防止其被删除的一些解决方案:

  • 将其明确设置为<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <ul class="list-group" style="margin:20px"> <li class="list-group-item row"> <a href="#" class=""> <span class="pull-left col-md-8 col-xs-8"> <span class="col-md-10" style="font-size: 16px;">Item 1</span> <span class="col-md-1 pull-right glyphicon glyphicon-arrow-right"></span> </span> </a> <span class="pull-right btn-group col-md-4 col-xs-4"> <button class="btn btn-xs btn-info">Edit</button> <button class="btn btn-xs btn-warning">Delete</button> </span> </li> <li class="list-group-item row"> <a href="#" class=""> <span class="pull-left col-md-8 col-xs-8"> <span class="col-md-10" style="font-size: 16px;">Item 2</span> <span class="col-md-1 pull-right glyphicon glyphicon-arrow-right"></span> </span> </a> <span class="pull-right btn-group col-md-4 col-xs-4"> <button class="btn btn-xs btn-info">Edit</button> <button class="btn btn-xs btn-warning">Delete</button> </span> </li> </ul>属性:window
  • 将其包含在无操作操作中:window.HUD = "hello";(这个更危险,因为更智能的引擎可以检测到它仍未真正使用)

请注意,这可能不是真正的问题:一旦这个变量开始变得有用(即它可能在代码中的某个地方使用),引擎就不会再删除它而你#&#&#t; 39;能够在没有技巧的情况下在控制台中看到它。