请解释下面的例子。我无法理解这里发生的事情。提前谢谢你
function f (x, y, ...a) {
return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9
答案 0 :(得分:2)
Rest获取参数的“rest”并将其放入分配给a
的数组中。
您的退货声明变为(1+2) * 3
,等于9。
一个更简单的例子:
[x, y, ...a] = [1, 2, 3, 4, 5, 6]
console.log(x)
// 1
console.log(y)
// 2
console.log(a)
// [ 3, 4, 5, 6 ]
答案 1 :(得分:0)
如果您认为参数作为简单数组传递,那么以下
function f(a,b,...c){...}
可以转换为:
function f(args){
var a = args[0],
b = args[1],
c = args.slice(2);
//...
}
答案 2 :(得分:0)
//function is getting defined here.
function f (x, y, ...a) {
return (x + y) * a.length
}
//function is getting called here.
f(1, 2, "hello", true, 7) === 9
当你的函数f被调用时,在函数f中,你的代码需要x as 1, y as 2
,而a作为包含["hello", true, 7]
的数组。所以,array a has length 3
。
您的功能结果为(1 + 2) * 3
,即9
。
因此,将函数结果与9进行比较是正确的。