Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在对象的函数属性中声明变量之前可以引用它?_Javascript - Fatal编程技术网

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

Javascript 为什么在对象的函数属性中声明变量之前可以引用它?,javascript,Javascript,基本上,我在寻找一个解释,解释为什么和如何工作 const someObj = { test: () => callback() } const callback = () => console.log("how?") someObj.test() 输出:如何输出? 而这不是 const someObj = { test: callback() } const callback = () => console.log("ho

基本上,我在寻找一个解释,解释为什么和如何工作

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

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

someObj.test()
输出:如何输出?

而这不是

const someObj = {
    test: callback()
}

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

someObj.test

输出:未捕获引用错误:初始化前无法访问“回调”

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


在第二个示例中,您试图将调用callback的结果分配给属性测试,但看到callback尚未定义,您就得到了错误。

在定义
someObj
时(在第一种情况下),此时实际上没有任何东西试图调用
callback
。但在第二种情况下,您试图在定义它之前调用它。