【发布时间】:2011-07-07 09:02:31
【问题描述】:
这实际上不是我遇到的具体问题,而是我想教育自己的一些事情:
据我了解,JavaScript 中的代码如下
if (true) {
function greet(){ alert("Hello!"); }
} else {
function greet(){ alert("Hi!"); }
}
greet();
输出Hi!,因为代码实际上是这样评估的:
greet = function(){ alert("Hello!"); }
greet = function(){ alert("Hi!"); }
if(true){
// possibly a no-op assignment, such as greet = greet?
}else{
// same as the other branch?
}
greet();
从语言设计的角度来看,为什么 JavaScript 会这样?
【问题讨论】:
标签: javascript evaluation