头等函数不是意味着它们表现为变量吗?显然,它们的行为与变量并不完全相同,因为:
console.log(foo);
var foo = 'bar';
...不起作用,而这个:
console.log(foo());
function foo() {
return('bar');
}
...做。
也就是说,这个:
console.log(foo());
var foo = function() { return 'bar'; };
不起作用,这是更一致的。
是什么赋予了?
最佳答案
你所经历的被称为提升。使用 时函数声明 喜欢:
function foo() {}
foo
将被移动到最近的作用域(函数)的顶部。另一方面,当您使用 函数表达式 或 功能分配喜欢:
var foo = function() {}
变量
foo
将被移到顶部,但分配将在需要时进行。Learn more
关于javascript - 如果 JS 中的函数是一等的,那么是什么允许它们在定义之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274014/