Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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_Node.js_Scope_Anonymous Function - Fatal编程技术网

Javascript 匿名函数作用域混淆

Javascript 匿名函数作用域混淆,javascript,node.js,scope,anonymous-function,Javascript,Node.js,Scope,Anonymous Function,如何将匿名函数内的值分配给全局变量或其范围外的变量。例如,下面的例子console.log(行)返回正确的数据,而console.log(结果)返回未定义的数据 var result; this.query(sql).execute(function(error, rows) { console.log( rows ) result = rows; }); console.log( result ); Node.js是事件驱动的,这意味着大多数函数都是异步的。execute函数

如何将匿名函数内的值分配给全局变量或其范围外的变量。例如,下面的例子
console.log(行)
返回正确的数据,而
console.log(结果)
返回未定义的数据

var result;
this.query(sql).execute(function(error, rows) {
    console.log( rows )
    result = rows;
});
console.log( result );

Node.js是事件驱动的,这意味着大多数函数都是异步的。
execute
函数不返回任何值,因为“返回的”值在作为第一个参数声明的匿名函数中,只有在执行查询并且数据库返回值时才会调用该函数。因此,您的
结果
变量不包含任何值,因为还没有要返回的内容

**编辑**


即使在编辑之后,在将
分配给变量
之前,也会执行记录变量
结果的行,因为只有在查询完成后才会执行匿名函数。

Node.js是事件驱动的,这意味着大多数函数都是异步的。
execute
函数不返回任何值,因为“返回的”值在作为第一个参数声明的匿名函数中,只有在执行查询并且数据库返回值时才会调用该函数。因此,您的
结果
变量不包含任何值,因为还没有要返回的内容

**编辑**


即使在编辑之后,记录变量
结果的行也会在分配
行之前执行
,因为只有在查询完成后才会执行匿名函数。

执行
返回什么?它可能只是处理
.query
返回的项目,而不返回数组

执行
返回什么?它可能只是处理
.query
返回的项目,而不返回数组

更改示例代码,我复制了不正确的代码。同样的结果,它不会改变任何事情
result
不会保存任何值,原因很简单,因为匿名函数是异步执行的,这意味着以后一开始会有点混乱,但随着时间的推移,一切都变得更加清晰:)更改了示例代码,我复制了不正确的代码。同样的结果,它不会改变任何事情
result
不会保存任何值,这仅仅是因为匿名函数是异步执行的,这意味着以后一开始会有点混乱,但随着时间的推移,一切都会变得更清晰:)