将值传递给特定参数,而不关心参数的位置

nbr*_*bro 5 javascript parameters

我想知道是否可以通过例如指定其名称来将值传递给特定参数,而不考虑该参数是第一个,第二个还是第100个.

例如,在Python中,您可以轻松地执行以下操作:

def myFunction(x, y):
    pass

myFunction(y=3);
Run Code Online (Sandbox Code Playgroud)

我真的需要将一个值传递给一个特定的参数,我不知道它在参数枚举中的位置.我已经搜索了一段时间,但似乎没有任何效果.

Jam*_*iec 5

不,javascript中不存在命名参数.

有一种(某种)解决方法,通常复杂的方法可能会取一个对象来代替各个参数

function doSomething(obj){
   console.log(obj.x);
   console.log(obj.y);
}
Run Code Online (Sandbox Code Playgroud)

可以用来打电话

doSomething({y:123})
Run Code Online (Sandbox Code Playgroud)

哪个会undefined先记录(the x)然后记录123(the y).

您可以允许某些参数也是可选的,如果没有提供,则提供默认值:

function doSomething(obj){
   var localX = obj.x || "Hello World";
   var localY = obj.y || 999;
   console.log(localX);
   console.log(localY);
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*rpe 5

在 JavaScript 中不可能以这种方式传递参数。如果您需要这样做,最好将一个对象传递到您的函数中,并设置属性来表示您想要传递的参数:

function myFunction(p) {
    console.log(p.x);
    console.log(p.y);
}

myFunction({y:3});
Run Code Online (Sandbox Code Playgroud)