JavaScript默认参数:不传递任何值

时间:2018-03-24 12:56:00

标签: javascript

let add = (a = 0,b = 0) => {
    return a+b;
};

console.log(add(5,2));

我的期望是:0

,结果是:7

如果我通过a = 5b = 2然后在添加的函数中,ab已经分配了0,那么它应该返回0。为什么7

4 个答案:

答案 0 :(得分:0)

如果通过调用提供,则会覆盖默认参数。否则它们将毫无用处,因为你永远无法改变它们。

答案 1 :(得分:0)

这是默认值的重点:如果在调用函数时没有提供值,则使用默认值,否则使用函数调用中传递的值。

let add = (a = 2, b = 1) => {
  return a + b;
};

console.log(add(5, 2)); // no default will be used
console.log(add(5)); // only second default will be used
console.log(add(undefined, 4)); // only first default will be used

答案 2 :(得分:0)

在任何语言中,仅在未指定其他值时使用默认值。 因此,每当您为变量分配任何值时,它都会更改值。

与您的概念相同

let add = (a = 0,b = 0) => {
    return a+b;
};

console.log(add(5,2)); // it will return 7
console.log(add()); // it will return 0

答案 3 :(得分:0)

let add = (a = 0,b = 0) => {
    return a+b;
};

SO your function will be evaluated something like this

let add = (a, b) => {
    a = (typeof(a) !== undefined) ? a : 0; 
    b = (typeof(b) !== undefined) ? b : 0;
    return a + b; //your function code start from here.
}

因此,如果您通过add(5, 2),则条件(typeof(a) !== undefined)将为真,5将分配给ab则相同,但如果您通过add(5)然后,a的条件变为ttrue,a被指定为5,但b的条件为false,因此b将被指定为0