1
我已经给出了这个函数来预测输出。 这是说refrence错误,我仍然想知道为什么?函数if条件子句
if(function x(){console.log("ABC");})
{
x();
}
希望有人可以对词法范围进行一些说明。 在此先感谢。
我已经给出了这个函数来预测输出。 这是说refrence错误,我仍然想知道为什么?函数if条件子句
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
,这就是为什么当你尝试调用它不存在。
请参阅http://stackoverflow.com/questions/10069204/function-declarations-inside-if-else-statements – elclanrs
这是一个函数表达式,并没有在任何范围内声明任何变量,但它自己。你真的不应该在if语句的条件下使用它。 – Bergi
@elclanrs:不完全是 – Bergi