当前位置: 首页 > 知识库问答 >
问题:

为什么我不能返回箭头函数?[副本]

柯天宇
2023-03-14
var square = (a) => a * a;

var callAndLog = (func) => {
  return function () {
    var res = func.apply(undefined, arguments);
    console.log("Result is: " + res);
    return res;
  }
};

var squareAndLog = callAndLog(square);

squareAndLog(5);  // Result is 25

这里,当我返回一个箭头函数insted时,它不起作用:

var square = (a) => a * a;
var callAndLog = (func) => {
  return (() => {
    var res = func.apply(undefined, arguments);
    console.log("Result is: " + res);
    return res;
  })
};
var squareAndLog = callAndLog(square);
squareAndLog(5); // Result is NaN

我知道箭头函数是松散的,这就是为什么我在这里尝试在括号()中返回它。没有他们也不行。

共有1个答案

史超英
2023-03-14

来自MDN:

箭头函数表达式的语法比函数表达式短,并且不绑定自己的this参数supernew.target

箭头函数不将参数对象绑定到其主体。您的函数依赖于参数的使用,因此它不能作为箭头函数工作。

var square = (a) => a * a;
var callAndLog = (func) => {
  return (...args) => {
    var res = func.apply(undefined, args);
    console.log("Result is: " + res);
    return res;
  };
};
var squareAndLog = callAndLog(square);
squareAndLog(5); 
 类似资料:
  • 问题内容: 我有一个箭头函数,看起来像这样(简化): 但是当我调用它时,我得到: 为什么? 例: ( 注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。) 问题答案: 当您使用箭头函数的函数主体版本(带有)时,没有暗示。您必须指定它。当您使用 简洁 主体(no )时,主体表达式的结果将由函数隐式返回。 因此,您可以使用显式的方式编写该代码: 或简洁的主体: 例子: 略 切线

  • 我正在阅读ScrollListView的源代码,在一些地方我看到了的用法。 88号线。 这是的缩写吗?如果有什么不同,又是怎么回事?

  • 它必须是基本的,但请帮助我理解为什么这不起作用。 当我编写一个普通的arrow函数并返回jsx时,它就工作了。但是,当我使用async/await请求和相同的arrow函数返回jsx时,它失败了。 编辑: 实际上,我必须在列表视图中显示用户的配置文件图像。所以,我调用这个函数来检索我的块中相应用户的图像 这很有效 但事实并非如此

  • 问题内容: 我试图从我的主函数返回一个更大的值,例如1000,但是当我键入它时显示0。 如果我返回一个较小的值(如100),它将显示正确的值。 我的代码: 我们可以返回的值是否有限制? 问题答案: 这里有两个相关的概念:C退出状态和bash返回代码。它们都覆盖0-255的范围,但是bash出于自己的目的使用大于126的数字,因此从程序中返回这些值会造成混乱。 为了安全起见,请将退出状态代码限制为0

  • 在上面的代码中,执行以下语句时不调用复制构造函数: 既然返回是按值的,为什么不调用复制构造函数? 谢啦

  • 我先试过这个- 很好用。现在我用胖箭做了同样的事情。在这种情况下,“this”是未定义的。