为什么即使参数作为命名参数传递,参数的顺序也保持不变?在javascript中

为什么即使参数作为命名参数传递,参数的顺序也保持不变?在javascript中,javascript,python-3.x,parameter-passing,Javascript,Python 3.x,Parameter Passing,例如,在python中: def dfde(name,age): print(age) print(name) print(age) dfde(age=27,name="dfd") 将给出如下输出: 27 dfd 27 let dfde = function(name, age){ console.log(age); console.log(name); console.log(age); } dfde(age=27,

例如,在python中:

def dfde(name,age):
       print(age)
       print(name)
       print(age)

 dfde(age=27,name="dfd")
将给出如下输出:

27
dfd
27
let dfde = function(name, age){
    console.log(age);
    console.log(name);
    console.log(age);
}

dfde(age=27, name="dfd")
dfd
27
dfd
但是javascript中的samething会给出如下输出:

27
dfd
27
let dfde = function(name, age){
    console.log(age);
    console.log(name);
    console.log(age);
}

dfde(age=27, name="dfd")
dfd
27
dfd
将输出为:

27
dfd
27
let dfde = function(name, age){
    console.log(age);
    console.log(name);
    console.log(age);
}

dfde(age=27, name="dfd")
dfd
27
dfd
即使参数也作为命名参数传递

为什么呢

即使参数也作为命名参数传递

没有命名参数

dfde(age = 27, name = "dfd")
同:

dfde(27, "dfd")
(另外,
age=27
创建一个新的全局变量age并为其赋值)


要在js中使用类似命名参数的东西,您必须传递一个对象文本并解构:

function dfde({name, age}) {
  console.log(name, age);
}

dfde({ name: "dfd", age: 27 });
// Same as
dfde({ age: 27, name: "dfd" });
即使参数也作为命名参数传递

没有命名参数

dfde(age = 27, name = "dfd")
同:

dfde(27, "dfd")
(另外,
age=27
创建一个新的全局变量age并为其赋值)


要在js中使用类似命名参数的东西,您必须传递一个对象文本并解构:

function dfde({name, age}) {
  console.log(name, age);
}

dfde({ name: "dfd", age: 27 });
// Same as
dfde({ age: 27, name: "dfd" });

这是因为JavaScript中没有命名参数。它按优先顺序识别参数。所以,你应该这样做:

let dfde=函数(姓名、年龄){
控制台日志(年龄);
console.log(名称);
控制台日志(年龄);
}
dfde(name=“dfd”,age=27)//它只是将全局范围的变量声明为`var`

dfde(“dfd”,27)//与上面相同
之所以发生这种情况,是因为JavaScript中没有命名参数。它按优先顺序识别参数。所以,你应该这样做:

let dfde=函数(姓名、年龄){
控制台日志(年龄);
console.log(名称);
控制台日志(年龄);
}
dfde(name=“dfd”,age=27)//它只是将全局范围的变量声明为`var`

dfde(“dfd”,27)//同上
您的python代码使用命名参数,javascript代码包含位置参数。当您使用命名参数时,函数将根据名称检查参数,当您传递位置参数时,它将使用参数的位置检查您的python代码正在使用命名参数,javascript代码包含位置参数。当您使用命名参数时,函数将根据名称检查参数,当您传递位置参数时,它将使用参数的位置进行检查。如果我们还需要将默认值传递给函数声明,该怎么办?我们可以这样做:让scoreName=function({name:“edfe”,age:27}){console.log(name,age):};通过调用scoreName()函数,它将发出put:edfe27@mohammad是的,只需执行
函数({name=“sgdh”,age=27}={}){
如果我们还需要将默认值传递给函数声明怎么办?我们可以这样做:让scoreName=function({name:“edfe”,age:27}){console.log(name,age):};以scoreName()的形式调用函数它会以edfe的形式发布吗27@mohammad是的,只需执行
函数({name=“sgdh”,age=27}={}){