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

JavaScript ECMAScript文档中的SpreadElement是什么?它与MDN的Spread语法相同吗?

关飞翔
2023-03-14
问题内容

在ECMAScript规范中进行了SpreadElement描述

SpreadElement[Yield]:
...AssignmentExpression[In, ?Yield]

这和Spread语法一样吗

扩展语法允许将迭代式(例如数组表达式或字符串)扩展到期望零个或多个参数(用于函数调用)或元素(用于数组文字)的位置,或将对象表达式扩展在零个或多个位置键值对(用于对象文字)是必需的。

句法

对于函数调用:

myFunction(...iterableObj);

对于数组文字:

[...iterableObj, 4, 5, 6]

在MDN文档中有描述?

SpreadElement和,或,扩展语法的用例是什么?如果SpreadElement和传播语法不同,它们在哪些特定方式上有所不同?


问题答案:

这是错误的,因为...它不是运算符(至少在ECMAScript规范使用术语“运算符”的意义上如此)。它不会 生成
可用于进一步计算的值。我宁愿将其与其他标点符号进行比较,例如,;(它们也是相关的,但在不同上下文中具有不同的含义)。

术语“扩展运算符”可以指:

Spread元素var arr = [a, b, ...c];: Spread元素将iterable(c)扩展为新数组。等同于[a,b].concat(c)。

剩余元素[a, b, ...c] = arr;†:在解构内部,...构造具有相反的效果:它将剩余元素收集到数组中。这里的示例等效于

a = arr[0];
b = arr[1];
c = arr.slice(2);

(请注意,这只是一个近似值,因为解构作用于任何可迭代的值,而不仅仅是数组)

fun(a, b, …c):这个结构实际上在规范中没有名字。但是它的工作原理与传播元素非常相似:它将可迭代项扩展到参数列表中。
等同于func.apply(null, [a, b].concat(c))

缺少正式名称可能是人们开始使用“扩展运算符”的原因。我可能会称其为“扩展参数”。

Rest参数function foo(a, b, ...c)与rest元素类似,rest参数收集传递给函数的其余参数,并将其作为in中的数组使用c。ES2015规范实际上使用该术语BindingRestElement来指代此构造。



 类似资料:
  • 问题内容: 如标题所述,有哪些不同的文档类型?它们的含义是什么?我注意到从切换到IE7时,布局看起来有些不同 至 还有其他的吗?影响或后果是什么? 谢谢! 问题答案: 一个 文档类型 或 文档类型声明 关联与文档 的文档类型定义 。 该 文档类型定义 是一个XML文档的标准。XML和XHTML文档都有许多DTD。XML本身并没有太多的架构或一组非常具体的规则,除了要求一切都必须格式正确。您可以将D

  • 在 JavaScript 中,很多内建函数都支持传入任意数量的参数。 例如: Math.max(arg1, arg2, ..., argN) —— 返回入参中的最大值。 Object.assign(dest, src1, ..., srcN) —— 依次将属性从 src1..N 复制到 dest。 ……等。 在本章中,我们将学习如何编程实现支持函数可传入任意数量的参数。以及,如何将数组作为参数传递

  • 我刚刚开始使用MongoDB,我注意到它使用BSON在内部存储数据。然而,关于什么是BSON以及如何在MongoDB中使用BSON,文档并不十分清楚。有人能给我解释一下吗?

  • https://developer.mozilla.org/en-US/docs/Web/API/Window

  • 本文向大家介绍JSP中的scriptlet是什么,其语法是什么?,包括了JSP中的scriptlet是什么,其语法是什么?的使用技巧和注意事项,需要的朋友参考一下 脚本可以包含任意数量的JAVA语言语句,变量或方法声明或在页面脚本语言中有效的表达式。 以下是Scriptlet的语法- 您可以编写与上述语法等效的XML,如下所示- 您编写的任何文本,HTML标记或JSP元素都必须在scriptlet

  • 有人能帮我理解testProguardFile的用法吗。假设我在gradle build文件中有调试buildType及其配置如下: 那么为什么我要提供另一个名为test-proguard-rules的proguard规则文件呢。专业测试?如果我理解正确,当我进行仪器测试时,会生成一个单独的apk,但是如果我只进行单元测试,情况是否也是这样? 我希望能够运行“单元测试”(不是仪器测试),但让单元测