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