代码之家  ›  专栏  ›  技术社区  ›  Deadpool

未返回正确值但未定义的函数的类型

  •  -4
  • Deadpool  · 技术社区  · 6 年前

    在下面的示例中,我向 typeof 函数,但结果是 1undefined 为什么?

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

    预期结果:

    1function
    

    实际结果:

    1undefined
    

    有人能帮我理解结果是怎样的吗 1function ?我知道,如果块没有自己的作用域,那么就没有意义了,为什么在圆括号中,函数在圆括号外是不可见的。

    2 回复  |  直到 6 年前
        1
  •  5
  •   CertainPerformance    6 年前

    此处的函数被评估为 函数表达式 因为它在一个 if 陈述因此,它不会被提升,也不会在其自身功能体之外的任何地方可见。的内部 如果 语句需要一个值,因此它被视为表达式。

    只有函数声明才能被提升并在其块中的任何位置可见。

        2
  •  1
  •   Mamun    6 年前

    这个 f() 在条件中是 函数表达式 不是一个 功能声明 未吊装。因此 undefined 已添加:

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