首页 > 解决方案 > 为什么在对象的函数属性中声明变量之前可以引用它?

问题描述

基本上,我正在寻找解释为什么以及如何工作

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

标签: javascript

解决方案


在您的第一个示例中,您正在为属性测试分配一个函数。在您调用它之前,它不会尝试调用回调。当你调用它的时候,回调已经被定义了。在定义回调之前尝试调用测试,你会看到是否也会失败。

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


推荐阅读