变量作为JavaScript中的属性

Pav*_*uva 1 javascript

考虑以下代码:

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

即使mySuperProperty尚未设置,if语句中的条件也会计算为true.为什么?

亲自尝试一下.

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

Ser*_*sky 9

我猜这是因为:JS代码首先被解析和分析.变量和函数此时会被实例化,但只有在执行期间,它们才会被赋予在declaratins中使用的值.这正是你在警报中得到"未定义"的原因.