考虑以下代码:
<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代码首先被解析和分析。
变量和函数此时被实例化,但是只有在执行过程中,它们才会使用声明中使用的值进行分配。这正是您在警报中得到“未定义”的原因。