函数的typeof没有返回正确的值但未定义

时间:2018-04-19 05:40:52

标签: javascript conditional

在以下示例中,我向typeof函数添加了一个数字,但结果为1undefined。为什么?

var y = 1;
if (function f(){}) {
  y += typeof f;
}
console.log(y);

预期结果:

1function

实际结果:

1undefined

有人可以帮我理解结果不是1function吗?我知道如果块没有自己的范围,那么为什么在圆括号中这个功能在圆括号外是不可见的。

2 个答案:

答案 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);