我被赋予此功能来预测输出。 这是说参考错误,我还在想为什么?
if(function x(){console.log("ABC");})
{
x();
}
希望有人可以对词汇范围有所了解。 提前谢谢。
答案 0 :(得分: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
因此,您实际上从未声明函数x
,这就是为什么当您尝试调用它时不存在的原因。