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

“foo(…arg)”(函数调用中的三个点)是什么意思?

陶沛
2023-03-14

有人能说出“角度介绍”示例中下面代码中的“…”是什么吗?

getHeroes() {
    this.backend.getAll(Hero).then( (heroes: Hero[]) => {
      this.logger.log(`Fetched ${heroes.length} heroes.`);
      this.heroes.push(...heroes); // fill cache
    });

共有3个答案

王凌
2023-03-14

这是原始数组的副本

let args = [7, 3, 8];
var [h] = args.reverse(); // args is now 8, 3, 7

鉴于

var [h] = [...args].reverse(); // args is still 7, 3, 8

它也可以用来指定数组的剩余值

var [first, ...rest] = args; // first = 7, rest = [3, 8]
阮梓
2023-03-14

这是一个称为Rest参数的JavaScript特性。通过使用它,您的函数可以接受任意数量的参数。您将三个点放在参数前面(不带空格字符),然后机制为您展开它,就好像它是多个参数的列表一样。在雄辩的Javascript中,您有一个很好的例子。

let numbers = [5, 1, 7];
console.log(max(...numbers));
// -> 7
孙福
2023-03-14

这与jQuery或Angular无关。这是ES2015中引入的一项功能。

的这种特殊用法实际上没有正式名称。与其他用法一致的名称是“spread argument”(通用术语是“spread syntax”)。它“分解”(扩展)一个iterable,并将每个值作为参数传递给函数。你的例子相当于:

this.heroes.push.apply(this.heroes, Array.from(heroes));

除了更简洁之外,...的另一个优点是它可以更容易地与其他具体参数一起使用:

func(first, second, ...theRest);

// as opposed to the following or something similar:
 func.apply(null, [first, second].concat(Array.from(heroes)));
 类似资料:
  • 问题内容: 如果在Travis CI上运行Golang测试,它将以三个点下载所有依赖项: 什么表示或扩展到那里?我已经做过一些研究,但这似乎不是Unix惯例。 问题答案: 从命令: 如果导入路径包含一个或多个“ …”通配符,则通配符是一种模式,每个通配符都可以匹配任何字符串,包括空字符串和包含斜杠的字符串。这样的模式将扩展到在GOPATH树中找到的所有名称与模式匹配的软件包目录。作为一种特殊情况,

  • 我正在学习react,并试图找到在JSX内部循环的方法,这时我在react JSX内部遇到了这个stackoverflow链接-循环。这个问题的作者说,我意识到并理解为什么这不是有效的JSX,因为JSX映射到函数调用,我不明白他的意思。

  • 当我安装Magento 2在我的服务器上,我得到了一个错误。经过对代码的调查,发现有三个点(),这是产生错误的。我包含了我在下面找到的代码:

  • 问题内容: 我看到其他地方说: 等于 我测试了一下,他们确实做了同样的事情。但为什么?到底是什么? 问题答案: AND和OR运算符都可以捷径。 因此,仅在第一个表达式为true时才尝试第二个表达式(更确切地说,是类似事实的表达式)。第二个操作确实起作用(无论其内容如何)的事实无关紧要,因为除非第一个表达式的计算结果为真,否则它不会执行。如果是事实,则将执行它以尝试第二次测试。 相反,如果语句中的第

  • 问题内容: 什么是在这个做反应(使用JSX)代码,什么是它叫什么名字? 问题答案: 那是 财产传播符号 。它是在ES2018中添加的(用于数组/可迭代对象的版本早于ES2015),但是它在React项目中已经通过翻译长期得到支持(“ JSX传播属性 ”,即使您也可以在其他地方这样做) )。 将 “自己的”可枚举属性作为离散属性 散布 在要创建的元素上。例如,如果包含和,则 将与 但是它是动态的,因

  • 问题内容: 运算符在Python中是什么意思,例如l或代码? 在解释器内部如何处理? 它会影响性能吗?是快还是慢? 什么时候有用,什么时候没有? 应该在函数声明中还是在调用中使用它? 问题答案: 单颗星将序列集合解压缩为位置参数,因此你可以执行以下操作: 这将打开元组的包装,使其实际执行为: 双星 只使用字典并因此命名参数来做同样的事情: 你还可以结合: 另请参见Python文档的4.7.4-解包