例如python中的
def dfde(name,age):
print(age)
print(name)
print(age)
dfde(age=27,name="dfd")
将给出如下输出:
27
dfd
27
但是javascript中的相同内容将给出如下输出:
let dfde = function(name, age){
console.log(age);
console.log(name);
console.log(age);
}
dfde(age=27, name="dfd")
将输出为:
dfd
27
dfd
偶数参数也作为命名参数传递,
那是为什么?
答案 0 :(得分:2)
甚至将参数作为命名参数传递,
没有命名参数。
dfde(age = 27, name = "dfd")
与以下相同:
dfde(27, "dfd")
(另外age = 27
创建一个新的全局变量年龄并为其分配值)
要在js中使用诸如命名参数之类的东西,您必须传递一个对象文字并对其进行解构:
function dfde({name, age}) {
console.log(name, age);
}
dfde({ name: "dfd", age: 27 });
// Same as
dfde({ age: 27, name: "dfd" });
答案 1 :(得分:0)
发生这种情况是因为JavaScript中没有命名参数。它按优先级顺序识别参数。因此,您应该这样做:
let dfde = function(name, age){
console.log(age);
console.log(name);
console.log(age);
}
dfde(name="dfd", age=27) // it just declares variable to global scope as `var`
dfde("dfd", 27) // same as above
您还可以使用arguments
来记录函数接收参数的方式,如下所示:
let dfde = function(name, age){
console.log(arguments); // no named parameters
}
dfde(name="dfd", age=27)
如果要使用类似命名参数的内容,请参考this answer。