我学习JavaScript。之前我使用过C#,我期望这个函数有一些C#类似的行为:
function foo(a = 'asdf', b = 3.5, c = true) {
return a + ' ' + b + ' ' + c;
}
console.log(foo());
console.log(foo('qwerty', 123, false));
console.log(foo(b = 567));
console.log(foo(c = true, a = 'qwerty', b = 789));
// console.log(foo(,55,)); // gives VM806:1 Uncaught SyntaxError: Unexpected token ,

我标记了输出结果让我感到惊讶:
嗯...这是否意味着不可能有选择地指出参数值,即使它们的名字明显指向也无法替换参数位置?
我试图找到答案here,但我一无所获。
答案 0 :(得分:1)
Javascript没有命名函数参数,如C#和Python。您的函数定义只为每个参数提供默认值,但参数与参数的位置匹配。
通过在对象中传递参数,您可以使用ES6解构获得类似的东西。
= {}

我在函数定义中添加了foo({})
以允许调用没有参数的函数;否则第一个电话必须是RangeSlider
答案 1 :(得分:0)
您只是在调用函数
时引用要作为参数传递的值 function foo(a = 'asdf', b = 3.5, c = true){
return a + ' ' + b + ' ' + c;
}
foo() => asdf 3.5 true
foo(b ='google') => a 3.5 true // in this case u are declaring a variable b with value 'google' and passing to your function and in your function the reference parameter is 'a' (so the variable 'b' is assigned to 'a' and the value of b is google its like a=b='google') so the final value of parameter a is 'google'
var name = 'google';
foo(name) => google 3.5 true