const foo =() => 'foo!';
const doAThing = (
foo = foo
) => {
console.log(foo)
}
doAThing();
提供了以下:为什么ES6的默认参数函数没有定义?
/private/var/folders/xp/n5tbdrrs761ck82qqychcf61ptmq9d/T/CodeRunner/Untitled.js:4
foo = foo
^
ReferenceError: foo is not defined
at doAThing (/private/var/folders/xp/n5tbdrrs761ck82qqychcf61ptmq9d/T/CodeRunner/Untitled.js:4:8)
at Object.<anonymous> (/private/var/folders/xp/n5tbdrrs761ck82qqychcf61ptmq9d/T/CodeRunner/Untitled.js:9:1)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:423:7)
at startup (bootstrap_node.js:147:9)
(如果我让_foo = foo
那么它的工作原理) 为什么没有在我的例子定义富?
'foo'也是一个常数:思想: – Tvde1
foo'阴影外'foo',即使在默认值的参数'。 –
大概是因为在那个范围内'foo'指的是你尚未设置的参数的值。见例如http://2ality.com/2015/02/es6-scoping.html#parameter-default-values-and-the-temporal-dead-zone – jonrsharpe