如果我们具有以下功能:
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/