如何使用带有可选参数命名的 Apply 调用函数?
How to call a function using Apply with Optional parameter naming?
使用此函数 def: myFunc(p1, p2, p3 = 3, p4 = 4){ //do something }
我知道您可以使用 Apply
调用函数,
像这样:myFunc.apply([1, 2])
其中 1 是 p1,2 是 p2。
但是在指定特定的可选参数名称时如何使用 apply
?:
myFunc(1, 2, p4=>5)
谢谢!
与直接调用它的方式相同。调用函数时,要跳过默认参数,可以传递 undefined
:
myFunc(1, 2, undefined, 4);
你可以使用 apply
做同样的事情,只要在你想要默认参数启动时传入 undefined
:
function myFunc(p1, p2, p3 = 3, p4 = 4) {
console.log("p1:", p1);
console.log("p2:", p2);
console.log("p3:", p3);
console.log("p4:", p4);
}
myFunc.apply(null, [11, 22, undefined, 44]); // skips over p3
在 JavaScript 中,要传递特定的命名参数,您需要传递一个对象。您可以使用 object destructuring 来获得所需的结果。
{p1: 1, p2: 2, p4: 5}
function myFunc({p1, p2, p3 = 3, p4 = 4}){ console.log(p3); }
myFunc.apply(null, [{p1: 1, p2: 2, p4: 5}]);
Javascript 没有命名参数(包括 ES6)。所以你可以猜到,你只能将 apply
与位置参数一起使用,所以无法按照你想要的方式使用 apply
。
在 ES6 中,一种模拟命名参数的方法是使用一个对象,例如:
myFunc({ from=3, to=5 });
使用上述技术并应用 (ES6) 的示例:
let f = ({ p1='a', p2='b'} = {}) => { console.log(p1, p2); }
// logs 'a', 'b'
f.apply(this, [{ p1: 'c' }])
// logs 'c', 'b'
您可以在这里阅读更多内容:http://2ality.com/2011/11/keyword-parameters.html
使用此函数 def: myFunc(p1, p2, p3 = 3, p4 = 4){ //do something }
我知道您可以使用 Apply
调用函数,
像这样:myFunc.apply([1, 2])
其中 1 是 p1,2 是 p2。
但是在指定特定的可选参数名称时如何使用 apply
?:
myFunc(1, 2, p4=>5)
谢谢!
与直接调用它的方式相同。调用函数时,要跳过默认参数,可以传递 undefined
:
myFunc(1, 2, undefined, 4);
你可以使用 apply
做同样的事情,只要在你想要默认参数启动时传入 undefined
:
function myFunc(p1, p2, p3 = 3, p4 = 4) {
console.log("p1:", p1);
console.log("p2:", p2);
console.log("p3:", p3);
console.log("p4:", p4);
}
myFunc.apply(null, [11, 22, undefined, 44]); // skips over p3
在 JavaScript 中,要传递特定的命名参数,您需要传递一个对象。您可以使用 object destructuring 来获得所需的结果。
{p1: 1, p2: 2, p4: 5}
function myFunc({p1, p2, p3 = 3, p4 = 4}){ console.log(p3); }
myFunc.apply(null, [{p1: 1, p2: 2, p4: 5}]);
Javascript 没有命名参数(包括 ES6)。所以你可以猜到,你只能将 apply
与位置参数一起使用,所以无法按照你想要的方式使用 apply
。
在 ES6 中,一种模拟命名参数的方法是使用一个对象,例如:
myFunc({ from=3, to=5 });
使用上述技术并应用 (ES6) 的示例:
let f = ({ p1='a', p2='b'} = {}) => { console.log(p1, p2); }
// logs 'a', 'b'
f.apply(this, [{ p1: 'c' }])
// logs 'c', 'b'
您可以在这里阅读更多内容:http://2ality.com/2011/11/keyword-parameters.html