如果我们具有以下功能:

function add(first = second, second) { return first + second;   }


称为:

add(1,2); // returns 3


上面的代码可以正常工作,但是如果我们将其称为:

add(undefined, 2); //throws error


我不确定在ES6中如何解析内部参数,这会导致最后一个错误。

最佳答案

second的默认初始化程序进行评估时,first尚未初始化,尽管temporal dead zone,它仍位于being in scope中,将对其进行访问。

您应该将第二个参数设为可选:

function add(first, second = first) { return first + second; }
// and call it as
add(2);
add(2, undefined);


如果您真的想将第一个选项设为可选,则必须在函数主体中执行此操作:

function add(first, second) { return first + (second === undefined ? first : second); }

关于javascript - ES6中的默认参数引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39722854/

10-14 17:29