当前位置: 首页 > 面试题库 >

为什么我的arrow函数不返回值?

梁嘉祥
2023-03-14
问题内容

我有一个箭头函数,看起来像这样(简化):

const f = arg => { arg.toUpperCase(); };

但是当我调用它时,我得到undefined

console.log(f("testing")); // undefined

为什么?

例:

const f = arg => { arg.toUpperCase(); };

console.log(f("testing"));

注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。)


问题答案:

当您使用箭头函数的函数主体版本(带有{})时,没有暗示return。您必须指定它。当您使用 简洁 主体(no
{})时,主体表达式的结果将由函数隐式返回。

因此,您可以使用显式的方式编写该代码return

const f = arg => { return arg.toUpperCase(); };
// Explicit return ^^^^^^

或简洁的主体:

const f = arg => arg.toUpperCase();

例子:

const f1 = arg => { return arg.toUpperCase(); };

console.log(f1("testing"));



const f2 = arg => arg.toUpperCase();

console.log(f2("testing"));

切线,但说到{}:如果您希望简洁箭头的主体表达式成为对象初始化器,请将其放在()

const f = arg => ({prop: arg.toUpperCase()});


 类似资料:
  • 问题内容: 我的代码: 当我尝试运行这样的东西时: 我越来越: 但为什么? 我的主要目标是将令牌(从令牌中返回承诺)转换为变量。然后才执行一些操作。 问题答案: 只要其结果尚未解决,promise将始终记录未决。无论promise状态如何(已解决或仍处于待处理状态),您都必须调用promise来捕获结果: 这是为什么? 承诺只是向前的方向;您只能解决一次。a的解析值传递给其或方法。 根据Promi

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

  • 这里,当我返回一个箭头函数insted时,它不起作用: 我知道箭头函数是松散的,这就是为什么我在这里尝试在括号中返回它。没有他们也不行。

  • 问题内容: 我有一个自称的函数: 现在,如果我只输入,则一切正常: 但是,如果我输入其他内容,然后输入 ,则会得到以下信息: 我不知道为什么要回来,因为它应该只回来。这None是哪里来的,我该如何修复我的功能? 问题答案: 之所以返回,是None因为当你递归调用它时: ..你不返回该值。 因此,当确实发生递归时,返回值将被丢弃,然后你就无法使用该函数了。退出函数的末尾意味着隐式返回None,就像这

  • 问题内容: 我是一名编程初学者,对函数的返回值有疑问。 我正在学习Java。 我已经附上了我的书中具有经典选择排序功能的代码。 现在显然来自本书的代码可以正常工作。但是,主要功能中的以下三行是我的问题的基础: int [] a = new int [] {1,9,2,8,3,7,4,6​​,5}; 排序(a); if(ascending(a))System.out.println(“ Works”

  • 问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法正常工作。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案: