我希望这会导致“...”,#39;但我未定义。显然没有正确地做某事。有人能告诉我这里我做错了什么吗?
const barker = (state) => {
return {
speak: () => console.log(state.sound)
}
}
const newAnimal = sound => {
let state = {
sound
}
console.log(state.sound)
return Object.assign({}, barker(state))
}
console.log(newAnimal("woof").speak())
答案 0 :(得分:1)
这是你的问题:
speak: () => console.log( state.sound )
barker
返回一个带有函数属性speak
的Object,它不返回值(又名undefined
)。它的类型为() => void
,因为console.log
不会返回值。
您可以将其更改为:
speak: () => {
console.log( state.sound );
return state.sound;
}
甚至只是这个(没有记录):
speak: () => state.sound;
答案 1 :(得分:1)
您的代码完美无缺。它输出'woof'2次(一次来自newAnimal内的console.log,一次内置speak())。你得到了未定义,因为你还输出了speak方法的结果,这是console.log的返回值,它始终是未定义的。