gpt4 book ai didi

javascript - 作为参数的 javascript 参数和自定义选项之间有区别吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:58 24 4
gpt4 key购买 nike

通过默认“参数”访问 javascript 参数与使用显式对象(如“选项”)有区别吗?

除了一个访问数组参数而另一个访问对象选项之外,这两个是否相似?

$.fn.myFn = function(){
if arguments[0]//....
}

$.fn.myFn = function(options){
if options.value //....
}

最佳答案

是的,它们很相似,但也有不同。我不会将 arguments 用于任何不需要处理变量 numbers 的参数;我会使用声明的参数和/或 options 对象。 (另请注意,在大多数 JavaScript 引擎上,使用 arguments 伪数组 [它不是真正的数组] incurs a runtime speed penalty 与使用声明的参数甚至 options 对象相比. 请参阅下面的“附注”,当然您必须将该函数称为 lot 以使该开销在现实世界中很重要。)

为只接受几个参数的函数使用声明的参数通常是有意义的,例如:

x = parseInt(str, 10);

如果 parseInt 使用了一个 options 风格的对象,你必须这样写:

x = parseInt({string: str, radix: 10}); // Note: parseInt doesn't actually work this way

...或类似的,每次通话时输入更多。所以这是一个缺点。

但是当您遇到很多参数,尤其是很多可选参数时,使用options 模式,您传入一个对象而不是离散参数可以有真正的 yield 。考虑 jQuery ajax function .它有 ~32 个选项 你可以传递给它,几乎所有选项都是可选的。正如您可能不想像上面那样对每个 parseInt 进行编码,您可能也不希望像这样对每个 ajax 调用进行编码:

$.ajax(
"/path/to/resource",
function(data) {
},
undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined
);

...要么。 :-)

我听说过关于离散参数与 选项 样式对象的一条经验法则是,当你有四个参数时,人们就会开始迷失方向。当然,您需要自己画线。


旁注:关于arguments 比声明的 args 慢的更多信息,try this test .现在当然,调用开销大多数时候并不重要,所以大多数时候这并不重要。但在那些时候,这是我和其他人的结果:

enter image description here

如您所见,使用声明的参数是目前几乎所有引擎中最快的。我什至加入了一些东西,将 arguments 与传入数组进行比较,在那些时候你确实需要可变数量的参数(答案:你最好使用数组)。

关于javascript - 作为参数的 javascript 参数和自定义选项之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199447/

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