我不知道这句法或符号或任何属于Angular2
还是其他什么东西......什么是...语法? (在Angular2找到)
但我不知道,
什么...
语法以及它是如何幕后工作?
ngOnChanges(...args:any[])
{
console.log(args);
}
我不知道这句法或符号或任何属于Angular2
还是其他什么东西......什么是...语法? (在Angular2找到)
但我不知道,
什么...
语法以及它是如何幕后工作?
ngOnChanges(...args:any[])
{
console.log(args);
}
这是TypeScript rest operator。在这种情况下,它意味着任何类型的任何数量的参数都可以在那里发生;该函数将把它们看作一个数组any
。 (JavaScript的最近得到了休息和传播经营者,以及作为ES2015的,但在你的例子中,:any[]
告诉我们,这是打字稿。)
如:
ngOnChanges('a', 42, null);
...将显示
["a", 42, null]
在控制台中。
这里有一个完整的示例(live copy):
function foo(...args:any[]) {
console.log("args.length = " + args.length);
args.forEach((arg:any, index:Number) => {
console.log("args[" + index + "]: " + arg);
});
}
foo('a', 42, null);
输出
args.length = 3 args[0]: a args[1]: 42 args[2]: null
这是ES2015展开运算符(或省略号运算符)。这允许解构数组。
例如:
function myFunction(x, y, z) {
// x = 0, y = 1, z = 2
}
var args = [0, 1, 2];
myFunction(...args);
请参阅此链接了解详情:
其余参数语法允许我们将无限个参数表示为数组。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
function(a, b, ...theArgs) {
// ...
}
如果函数的最后一个命名参数与...前缀,它成为一个数组,其从0元件theArgs.length由传递的实际提供参数到功能。
在上面的例子中,Args会收集函数的第三个参数(因为第一个参数映射到a,第二个参数b)以及所有连续的参数。
感谢您的回答! – micronyks
感谢您的回答! – micronyks