这不是代码问题,而是一个一般性问题。
当您在函数或对象/构造函数方法中包含
(arguments)
时,它们传递到函数中的顺序很重要。
示例:
function(x,y,z) != function (z,y,x)
并且会给出不同的结果/可能会导致错误,具体取决于变量的传递方式。
我可以在函数内部编写一些内容来将值的顺序更正为函数期望的顺序吗?
因此,传递
function(z,y,x)
或 function(y,x,z)
并不重要,因为函数总是将自身更正为 function(x,y,z)
或者这是良好编程的一个方面,您希望所有内容都明确且绝对地定义,因此您不必按照我描述的方式设置意外情况。
给定一个类似的函数
function f(x,y,z) {
return x + 2*y + 3*z
}
输入是有序的,因此调用
f(1,2,3)
会在函数作用域内本地绑定 x=1, y=2, z=3
({}
大括号)。
要输入没有明确顺序的参数,需要某种方法来识别没有位置的参数,这可以通过将每个参数映射到对象中的名称并将其传递给函数来实现。
function g(obj) {
{ z, x, y } = obj
return x + 2*y + 3*z
}
通过这种方式,输入是无顺序的,但关于哪个参数所属的信息仍然被编码。
使
f(1,2,3)
、g({z:3,y:2,x:1})
和 g({x:1,y:2,z:3})
得到相同的结果。