if 条件子句中的函数

Function in if condition clause

我得到了这个函数来预测输出。 说是引用错误,我还在想为什么?

  if(function x(){console.log("ABC");})
    {
      x();
    }

希望有人能对词法范围有所了解。 提前致谢。

你有一个 函数表达式 ,即使是 命名的 一个,你没有将该表达式分配给任何东西.您将其命名为 x 并不意味着函数 x 将被提升到作用域中,因为这不适用于 表达式

function foo() {}    // function declaration
(function bar() {}); // named function expression, the () makes it not-a-statement here

foo();  // ok
bar();  // doesn't exist

所以实际上您永远不会声明一个函数 x,这就是为什么当您尝试调用它时 none 存在的原因。