首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一行中将传统的方法函数转换为箭头函数

如何在一行中将传统的方法函数转换为箭头函数
EN

Stack Overflow用户
提问于 2020-12-05 23:56:36
回答 3查看 557关注 0票数 1

你将如何转换:

代码语言:javascript
复制
(function(age) {return `your ${age}`;
})(10);

一个箭头函数?我试过了,但不起作用:

代码语言:javascript
复制
(const years = (age) => `your ${age}`)(10);

为什么不工作,如果是因为康斯特?

然后再举一个例子,如果我说:

代码语言:javascript
复制
const marco= { name: 'marco ccc',
  say hi: function () {
  return 'something';
  }
}

如何将sayHi转换为箭头函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-05 23:59:43

表达式分配给变量。箭头函数通常由两个部分组成:分配给它的变量和主体,例如:

代码语言:javascript
复制
const foo = () => { ... }
// ^ variable
            ^^^^ function body

变量的初始化只能作为语句在独立行上进行;const不能放在括号内。您只需要将返回值分配给的变量从(函数体和函数调用)中分离出来:

代码语言:javascript
复制
const years = ((age) => `your ${age}`)(10);
//             ^^^^^^^^^^^^^^^^^^^^^^
//             this is the function body
//             that needs to be invoked immediately
//                                     ^^ with the (10)
//    ^^^^^    with the result assigned to `years`
console.log(years);

在对象中,只需将function()替换为() => (请注意,say hi不是对象文本中的有效对象属性--要么用引号包围它,要么使用单个单词):

代码语言:javascript
复制
const marco = {
  name: 'marco ccc',
  sayHi: () => {
    return 'something';
  }
};

console.log(marco.sayHi());

票数 1
EN

Stack Overflow用户

发布于 2020-12-06 00:48:01

在创建异步闭包时,我经常这样做,这样我就可以在非异步函数体中使用await。看起来是这样的:

代码语言:javascript
复制
(async (arg1,arg2) => {
  console.log(arg1,arg2); // logs a,b
})('a','b');

它使我免于创建一个const,然后调用它,如下所示:

代码语言:javascript
复制
const outerFunc = () => {

   // ... some code

   const innerFunc = async () => {
      // I can use await in here
   };
   innerFunc();
}

相反,我这样做:

代码语言:javascript
复制
const outerFunc = () => {

   // ... some code

   (async () => {
      // I can use await in here
   })();
}

若要juse创建闭包,请关闭异步部分。

代码语言:javascript
复制
((...args) => console.log(...args))('a','b');

编辑:如果你仔细观察上面的内容,你会发现它实际上缩短到了

代码语言:javascript
复制
(console.log)('a','b')
票数 2
EN

Stack Overflow用户

发布于 2020-12-06 01:17:33

因此,基本上我想转换这两个函数(旧版本):

代码语言:javascript
复制
(function(age) {return `your ${age}`;
})(10);

代码语言:javascript
复制
const marco= { name: 'marco ccc',
  say hi: function () {
  return 'something';
  }
}

console.log(marco.sayHi());

它们分别是:

代码语言:javascript
复制
((age) => your age is ${age})(10);

代码语言:javascript
复制
const marco= { name: 'marco ccc', sayHi: () => {} }

但除此之外,我还试图了解生活的好处,例如:

代码语言:javascript
复制
const years = ((age) => your ${age})(10); 

是比以下内容更短的版本:

代码语言:javascript
复制
const years = (age) => your ${age}; 
const whatever = years(10); 
console.log(whatever);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65163255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档