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

ECMAScript 6箭头功能

晏鸿畅
2023-03-14
问题内容
var getTempItem = id => ({ id: id, name: "Temp" });

我知道上面的箭头功能等效于:

var getTempItem = function(id) {

    return {
        id: id,
        name: "Temp"
   };
};

但是我对以下内容有些困惑

const Todo = ({ onClick, completed, text }) => (
  <li
    onClick={onClick}
    style={{
      textDecoration: completed ? 'line-through' : 'none'
    }}
  >
    {text}
 </li>
)

为什么函数参数用大括号括起来,而函数主体仅用括号括起来?


问题答案:

ES6的一些语法糖元素在这里起作用:

  • 参数解构 :该函数实际上使用一个对象,但是在执行该函数之前,将其唯一的对象参数解构为三个变量。基本上,如果传递给函数的参数称为obj,则为onClick变量分配obj.onClick的值,并与其他命名的分解变量相同。
  • 简洁的箭头主体 :只需一个表达式的箭头函数就可以使用简洁的形式。例如,x => 2 * x是一个箭头函数,返回其输入乘以2。但是,ES6语法规范指出,箭头后的花括号必须解释为语句块。因此,为了使用简洁的主体返回对象,必须将对象表达式括在括号中。
  • JSX :括号通常用于需要跨越多行的JSX表达式。

奖励:箭头函数与函数声明和函数表达式不同的一种方式是,在箭头函数(即使是具有非简洁主体的箭头函数)中,和的值argumentsthis包含范围相同。因此,使用.call或调用箭头函数.apply无效,如果希望箭头函数采用可变数量的参数,则需要使用rest参数。



 类似资料:
  • 问题内容: Node.js是否已经支持=>函数关键字别名?如果是,请从哪个版本开始?如何启用此语言扩展? 成为 问题答案: 简而言之:是的,自版本4.4.5起,Node.js中就很好地支持箭头功能。 完全正确的支持从版本6开始。最初的支持是从v0.12开始引入的,但是它非常不完整,默认情况下处于禁用状态,直到v4.0变得更好为止。

  • 本文向大家介绍ECMAScript6的新特性箭头函数(Arrow Function)详细介绍,包括了ECMAScript6的新特性箭头函数(Arrow Function)详细介绍的使用技巧和注意事项,需要的朋友参考一下 箭头函数是ECMAScript 6最受关注的更新内容之一。它引入了一种用「箭头」(=>)来定义函数的新语法,它…它碉堡了~。箭头函数与传统的JavaScript函数主要区别在于以下

  • 通过和,我们将获得两种非常相似的在ES6中编写函数的方法。在其他语言中,lambda函数通常以匿名的方式区别于其他语言,但在ECMAScript中,任何函数都可以是匿名的。这两种类型都有独特的使用域(即当需要显式绑定或显式不绑定时)。在这两个领域之间,有很多情况下,任何一种表示法都可以。 ES6中的箭头函数至少有两个限制: null null

  • 问题内容: 可以有人,请解释以下内容: 我正在关注Dan Abramov的讲座并进行练习。 该代码工作正常,但是,当以下特定功能 用 大括号编写时,测试将失败。 相同的代码在 没有 大括号的 情况下也 可以正常工作。 这是JsBin。请从第31行开始。 问题答案: case ‘toggleTodo’ : return ( state.map( (one) => oneTodo( one, acti

  • 问题内容: 我是ES6和React的新手,并且我不断看到箭头功能。为什么某些箭头函数在粗体箭头之后使用花括号,而另一些使用括号?例如: 与 谢谢你的帮助! 问题答案: 括号返回单个值,花括号执行多行代码。 您的示例看起来很混乱,因为它使用的是JSX,看起来像多个“行”,但实际上只是被编译为一个“元素”。 这里有一些其他例子,它们都做同样的事情: 您还会经常在对象文字周围看到括号,因为这是避免解析器

  • 问题内容: 我可以使用关键字将javascript函数标记为“异步”(即返回承诺)。像这样: 箭头功能的等效语法是什么? 问题答案: 异步 箭头函数 如下所示: 传递给它的 单个参数的 异步 箭头函数 如下所示: __ 该 匿名 形式的作品,以及: 异步函数 声明 如下所示: 在 回调中 使用异步函数: