为什么要在对象的函数属性中声明变量之前先引用它?

时间:2020-07-01 03:12:10

标签: javascript

基本上,我正在寻找有关其原因和工作方式的解释

const someObj = {
    test: () => callback()
}

const callback = () => console.log("how?")

someObj.test()

output: how?

这不是

const someObj = {
    test: callback()
}

const callback = () => console.log("how?")

someObj.test

output: Uncaught ReferenceError: Cannot access 'callback' before initialization

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您正在为功能测试分配一个功能。除非您调用它,否则它不会尝试调用回调。在您称呼它时,回调已定义。在定义回调之前,请尝试调用test,否则会失败。

在第二个示例中,您试图将调用callback的结果分配给属性test,但是看到尚未定义callback,您会收到错误消息。