gpt4 book ai didi

javascript - 为什么应该使用 "apply"?

转载 作者:行者123 更新时间:2023-12-02 23:44:07 26 4
gpt4 key购买 nike

此片段摘自 JavaScript Ninja 的 secret 。

function log() {
try {
console.log.apply( console, arguments );
} catch(e) {
try {
opera.postError.apply( opera, arguments );
} catch(e){
alert( Array.prototype.join.call( arguments, " " ) );
}
}
}

为什么要使用 apply,console.log.apply(console, argument)console.log(arguments) 之间有什么区别?

最佳答案

在这种情况下,日志函数可以接受任意数量的参数。

使用.apply(),传递多少个参数并不重要。您可以将集合赋予 console.log(),它们将作为单独的参数到达。

所以如果你这样做:

console.log(arguments)

...您实际上为 console.log 提供了一个 Arguments 对象。

但是当你这样做时:

console.log.apply( console, arguments );

...就好像您分别传递了它们。

像这样使用 .apply() 的其他有用示例可以在其他可以接受可变数量参数的方法中进行演示。其中一个例子是 Math.max()

典型的调用是这样的:

var max = Math.max( 12,45,78 );  // returns 78

...返回最大数字。

如果您实际上有一个值数组,而您需要其中最大的值,该怎么办?您可以使用 .apply() 来传递集合。 Math.max 会认为它们是作为单独的参数而不是数组发送的。

var max = Math.max.apply( null, [12,45,92,78,4] );  // returns 92

如您所见,我们不需要提前知道将传递多少个参数。该数组可以有 5 或 50 个项目。无论哪种方式都会起作用。

关于javascript - 为什么应该使用 "apply"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4988645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com