在JavaScript中为参数选择性赋值

时间:2017-05-11 09:32:06

标签: javascript

我学习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 ,




我标记了输出结果让我感到惊讶:

enter image description here

嗯...这是否意味着不可能有选择地指出参数值,即使它们的名字明显指向也无法替换参数位置?

我试图找到答案here,但我一无所获。

2 个答案:

答案 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