在以下示例中,我向typeof
函数添加了一个数字,但结果为1undefined
。为什么?
var y = 1;
if (function f(){}) {
y += typeof f;
}
console.log(y);
预期结果:
1function
实际结果:
1undefined
有人可以帮我理解结果不是1function
吗?我知道如果块没有自己的范围,那么为什么在圆括号中这个功能在圆括号外是不可见的。
答案 0 :(得分:5)
该函数被评估为函数表达式,因为它在$twig->getExtension('Twig_Extension_Core')->setTimezone('Europe/Paris');
语句中。因此,它不会被提升,也不会在其自身功能体之外的任何地方可见。 if
语句的内部需要一个值,因此它被视为表达式。
只有函数声明会被提升并在其块中的任何位置可见。
答案 1 :(得分:1)
条件中的f()
是函数表达式而不是函数声明,并且不会被提升。因此添加了undefined
:
var y = 1;
function f(){}
if (f) {
y += typeof f;
}
console.log(y);