考虑以下代码:

<script type="text/javascript">
  if ('mySuperProperty' in window)
  {
    alert(window['mySuperProperty']);
  }
  var mySuperProperty = 1;
</script>


即使尚未设置mySuperProperty,if语句中的条件仍为true。为什么?

Try it yourself

我从http://dfilatov.blogspot.com/2009/04/javascript.html(俄语)窃取了这个问题

最佳答案

我猜这是因为:JS代码首先被解析和分析。
变量和函数此时被实例化,但是只有在执行过程中,它们才会使用声明中使用的值进行分配。这正是您在警报中得到“未定义”的原因。

07-24 20:01