if条款中的函数

Gya*_*raw 1 javascript if-statement runtime-error function

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

  if(function x(){console.log("ABC");})
    {
      x();
    }
Run Code Online (Sandbox Code Playgroud)

希望有人可以对词汇范围有所了解.提前致谢.

dec*_*eze 5

你所拥有的是一个函数表达式,即使是一个命名函数表达式,并且你没有将该表达式赋值给任何东西.您命名它的x事实并不意味着函数x将在范围中提升,因为这对表达式不起作用.

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

foo();  // ok
bar();  // doesn't exist
Run Code Online (Sandbox Code Playgroud)

所以实际上你永远不会声明一个函数x,这就是当你试图调用它时不存在的原因.