javascript - 函数值到底是什么?

标签 javascript function ecmascript-5

在 JavaScript (ECMAScript 5) 中,函数是有值(value)的(它们被称为“一流函数”)。

这允许我们将它们用作表达式(表达式是产生值的所有内容,并且可以包含其他表达式:var exp0 = (exp1) + exp2 - exp3.function(); 是语法正确的陈述)。

在上面的代码中,有 8 个表达式:exp0、exp1、(exp1)、exp2、(exp1) + exp2、exp3、exp3.function() 和 (exp1) + exp2 - exp3.function()。

<小时/>

因为函数可以用作表达式,所以以下代码是正确的:

var my_function_0 = function a() {} 是一个命名函数表达式。

下面的代码也是正确的:

var my_function_1 = function(){}` 是一个匿名函数表达式。

两者都很有值(value),都是值(value)观。

<小时/>

现在,考虑下面的代码:

函数 requiredIdentifier() {}

它不是“命名或匿名函数表达式”,而是函数声明。

<小时/>

我的问题是:

声明的函数是否具有/产生值?

这个问题与这个问题等效: 声明的函数是表达式吗?(即使它不是命名或匿名函数表达式?!)

最佳答案

Does a declared function have/produce a value?

是的。无论使用什么语法来创建函数,函数都是一个可调用对象(即它实现了一个使其可调用的内部接口(interface)):

function a() {}
var b = function() {}
var c = (new Function()) // or some other expression that returns a function

所有变量abc都保存一个函数值。

语法之间的区别仅在于何时创建值以及是否/何时将其绑定(bind)到变量。请参阅var functionName = function() {} vs function functionName() {}了解这些详细信息。

关于javascript - 函数值到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540317/

相关文章:

javascript - 不存在的属性 HTML 输入字段

javascript - php-js 函数未定义

javascript - 通过 jquery 从附加的 div 传递函数值

javascript - 在 NodeJS 中迭代字符串行

prototype - 6To5 编译器 - 使用 __proto__ 进行继承

javascript - 在类型脚本中添加 SVG 内容时出现错误

javascript - 如何在 React 组件之间传递数据到另一个组件内的 div

javascript - Webgl - 纹理坐标偏移

R编程: perform function with switch functionality for each row based on different columns

javascript - ECMA5 数组方法 - 查找数组中同类的第一个对象