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

“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传播属性 ”,即使您也可以在其他地方这样做) )。 将 “自己的”可枚举属性作为离散属性 散布 在要创建的元素上。例如,如果包含和,则 将与 但是它是动态的,因

  • 问题内容: 我想知道限制的含义是什么? 问题答案: 这是C99中引入的内容,它使编译器知道传入的指针与参数中的任何其他指针都没有指向相同的位置。如果向编译器提供此提示,则它可以进行一些更积极的优化而不会破坏代码。 例如,考虑以下功能: 显然,它从指针中添加了两个数字。如果需要,我们可以像这样使用它: 显然,它将输出8; 它本身增加了4。但是,如果我们添加到像这样: 那么以前的命令现在无效;它作为两