gpt4 book ai didi

javascript - 在javascript中创建智能参数传递的方法?

转载 作者:行者123 更新时间:2023-11-30 08:12:48 25 4
gpt4 key购买 nike

我对 javascript 有点陌生,我希望我的函数接受参数并关联他们的名字,

myFunction(width = 50, height = 20);
myFunction(height = 20, width = 20)
myFunction(width = 50); // height will get some default value

这样我就可以:

  function myFunction()
{
var width; // this will somehow get the variable that was passed in or set default value
var height; // this will somehow get the variable that was passed in or set default value
}

有没有办法在 javascript 中做到这一点?

此外,我还看到了表单的语法

ball: {     
x: '124',
y: '22',
}

但我不知道它叫什么。

也许我可以以某种方式使用这种语法,并创建某种对象,然后将其传递给我的函数。

但我要找的是:

  1. 按名称而不是顺序将参数传递给函数。
  2. 将所有传递给函数的参数设为可选;如果它们未传入,则分配默认值。

最好/最干净的方法是什么?

最佳答案

将对象作为单个参数传递是可行的方法。

例子:

function func(options) {
var width = options.width || 0;
var height = options.height || 0;
//...
}

func({height: 100}); // width will be 0 as options.width is undefined

如果未提供,|| 简写( bool 或)会将每个值设置为 0。也就是说,如果 options.width 的计算结果为 false,它将分配 0,这是未定义的情况(即 options .widthundefined)。

这是否足够取决于允许的值类型。例如。如果 false 是一个有效值,您必须显式测试 undefined

另一种可以说更方便的定义默认值的方法是使用 extend 函数:

function extend(a, b) {
for(var prop in b) {
if(b.hasOwnProperty(prop) && !a.hasOwnProperty(prop)) {
a[prop] = b[prop];
}
}
}

这会将对象 b 的所有属性复制到对象 a(如果它们不存在)。

它允许您以这种方式设置默认值

function func(options) {
extend(options, {width: 0, height: 0});
// access the values with options.height and options.width
// options.height is not overwritten
}

不管值是多少。


这是 jQuery 使用的方式。它提供了一个 $.extend [docs]开发插件时常用的函数,提供默认设置。接受命名参数和可选参数的函数的一个很好的例子是 $.ajax [docs] .

关于javascript - 在javascript中创建智能参数传递的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013874/

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