使用名称创建函数并用括号将其包装或将其作为参数/回调传递给另一个函数时。当您稍后尝试通过函数名称引用该函数时,将引发错误。
例:
(function name1(){});
console.log(name1); // throws error: name1 is not defined
例:
plugin.module(function name2(){});
name2(); // throws error: name2 is not defined
最佳答案
function
关键字执行两项相似但明显不同的操作:
它引入了一个函数声明语句;
它引入了一个函数表达式。
这两件事都创建了一个函数,但是前者(函数声明)也将函数名(在这种情况下是必需的)绑定到本地作用域中。但是,函数表达式不会将函数名称绑定到本地范围。该名称仅在所创建函数的范围内(即在函数内部)绑定。
当function
是语句中的第一个标记时,它是一个函数声明。否则,它是一个函数表达式。因此,当您在function
语句周围使用括号时,它不再是语句;这是一种表达。