javascript - 如果 JS 中的函数是一等的,那么是什么允许它们在定义之前被调用?

标签 javascript syntax functional-programming first-class-functions

头等函数不是意味着它们表现为变量吗?显然,它们的行为与变量并不完全相同,因为:

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/

相关文章:

Java 8 : Syntax for Implementing java. util.function.Function 作为 Lambda 表达式

functional-programming - 如何在ELM中将字符转换为ASCII值

Scala:使用 require 验证多个选项的优雅方式?

javascript - HTML:如何使滚动速度更快

javascript - Service Worker 会将其缓存保留多长时间?

javascript - jQuery:启用单选检查元素

javascript - 在 angularjs 中使菜单项处于事件状态 onclick

ruby - Ruby 哈希的括号语法

java - 为什么java中的abs()不起作用?

.net - 是否可以在F#中执行函数重载?