Javascript JS作用域/闭包如何传递参数
有人能解释为什么在下面的函数中,我能够将参数传递给嵌套函数吗?我的理解是,它必须与闭包和作用域有关(我认为我对闭包和作用域有相当的了解),但我似乎可以理解这个论点到底是如何通过的 以下功能分别输出1,2。但是返回语句doThis()如何获取“a”的参数?我不知道在哪里/如何访问/传递Javascript JS作用域/闭包如何传递参数,javascript,scope,closures,Javascript,Scope,Closures,有人能解释为什么在下面的函数中,我能够将参数传递给嵌套函数吗?我的理解是,它必须与闭包和作用域有关(我认为我对闭包和作用域有相当的了解),但我似乎可以理解这个论点到底是如何通过的 以下功能分别输出1,2。但是返回语句doThis()如何获取“a”的参数?我不知道在哪里/如何访问/传递 function doSomething(){ var b = 1; return function doThis(a){ console.log(b);//1 consol
function doSomething(){
var b = 1;
return function doThis(a){
console.log(b);//1
console.log(a);//2
}
}
var exec = doSomething();
exec(2);
函数
doSomething()
在执行时返回另一个函数
var exec = doSomething();
您可以认为exec
包含以下函数
function doThis(a){ // <- takes an argument
console.log(1); // comes from the b argument in the outer scope
console.log(a); // not set yet
}
当您执行doSomething()
时,返回的结果仍然保留对其中作用域的访问权限,这就是为什么doThis()
可以访问值b
-它是可以访问的。这和你能做的很相似
var foo=40;
功能条(值){
返回foo+值;
}
控制台日志(条(2))代码>函数doSomething()
在执行时返回另一个函数
var exec = doSomething();
您可以认为exec
包含以下函数
function doThis(a){ // <- takes an argument
console.log(1); // comes from the b argument in the outer scope
console.log(a); // not set yet
}
当您执行doSomething()
时,返回的结果仍然保留对其中作用域的访问权限,这就是为什么doThis()
可以访问值b
-它是可以访问的。这和你能做的很相似
var foo=40;
功能条(值){
返回foo+值;
}
控制台日志(条(2))代码>当您分配var exec=doSomething()时代码>,exec
基本上是在写:
var doSomething = function(a) {
console.log(b);
console.log(a);
}
它成了它自己的功能。因此,像Soexec(2)
一样传入2
与任何正常函数一样工作,只是由于闭包,它有变量b
可用。当分配var exec=doSomething()时代码>,exec
基本上是在写:
var doSomething = function(a) {
console.log(b);
console.log(a);
}
它成了它自己的功能。因此,像Soexec(2)
一样传入2
与任何正常函数一样工作,只是由于闭包,它具有可用的变量b