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

了解JavaScript作用域

了解JavaScript作用域,javascript,scopes,Javascript,Scopes,我试图理解作用域在JS中是如何工作的。你能告诉我我对这段代码的理解是否正确吗: for(var i = 0; i<5; i++){ setTimeout(function timeoutHandler() { var i = i; console.log(i); //undefined }) } for(var i=0;i试图通过以下示例理解它: for(var i=0;i试图通过以下示例理解它: 用于(var i=0;ivar i=i在setTimeout回调处理程

我试图理解作用域在JS中是如何工作的。你能告诉我我对这段代码的理解是否正确吗:

for(var i = 0; i<5; i++){
 setTimeout(function timeoutHandler() {
   var i = i;
   console.log(i); //undefined
 })
}

for(var i=0;i试图通过以下示例理解它:


for(var i=0;i试图通过以下示例理解它:


用于(var i=0;i
var i=i
在setTimeout回调处理程序中为
i
创建一个新的作用域,并且
i
在再次分配给
i
之前还没有定义。因此
i
未定义的
首先
var i=i
没有意义。
var i=i
等同于
vari、 i=i;
。尝试将
i
作为
setTimeout
@JJJ的参数传递,这将解释为什么
i
在setTimeout回调处理程序中设置为
undefined
var i=i
会为
i
创建一个新的作用域,并且
i
在分配给
i之前尚未定义de>再次出现。因此
i
未定义的
。首先
var i=i
没有意义。
var i=i
相当于
var i;i=i;
。尝试将
i
作为
setTimeout
@JJJ的参数传递,这将解释
i
设置为
未定义的原因。