Javascript 在函数运行的函数中保留局部变量
假设我有这样一个函数:Javascript 在函数运行的函数中保留局部变量,javascript,function,scope,Javascript,Function,Scope,假设我有这样一个函数: function cookie(){ var a = 5; function cat(){return a} return cat()} cookie() // 5 它工作正常,它从父函数获取变量a。现在,当我在cookie之外定义cat函数时,它不是这样工作的 function cat(){return a} function cookie(){ var a = 5; return cat()} cookie() //
function cookie(){
var a = 5;
function cat(){return a}
return cat()}
cookie() // 5
它工作正常,它从父函数获取变量a。现在,当我在cookie之外定义cat函数时,它不是这样工作的
function cat(){return a}
function cookie(){
var a = 5;
return cat()}
cookie() // "a is not defined" error message
这是有道理的,但我仍然想知道如何将局部变量从函数cookie传递到函数cat
如何从cookie中将局部变量“a”也定义在cat中作为局部变量?您不能。变量被困在您声明它们的任何范围内 您可以像传递其他变量一样,将变量的值作为函数参数传递
功能类别(已通过){
返回已通过(a);;
}
函数cookie(){
var a=5;
返回类别(a);
}
曲奇()代码>您不能。变量被困在您声明它们的任何范围内
您可以像传递其他变量一样,将变量的值作为函数参数传递
功能类别(已通过){
返回已通过(a);;
}
函数cookie(){
var a=5;
返回类别(a);
}
曲奇()代码>我猜您的意思是将a
作为参数传递到cat
:
function cat(somevar){
return somevar
}
function cookie(){
var a = 5;
return cat(a)
}
cookie()
它所做的是声明cat
函数并接受一个参数。在cat
中,返回参数。现在您可以将a
传递到函数中,并在cookie
中返回它我猜您的意思是将a
作为参数传递到cat
:
function cat(somevar){
return somevar
}
function cookie(){
var a = 5;
return cat(a)
}
cookie()
它所做的是声明cat
函数并接受一个参数。在cat
中,返回参数。现在,您可以将a
传递到函数中,并在cookie
中将其作为参数传递,或者使用两个函数共有的作用域。什么?我必须改变猫的论点吗?我该怎么做?将其作为参数传递,或者使用两个函数共用的作用域。什么?我必须改变猫的论点吗?我该怎么做?@CaptainCrunch我是说,你可以破解一些东西,但我不推荐。谢谢你的回答!我想你可能需要这样做,但是有没有办法通过cookie将一个函数绑定到一个cat,而不需要编辑cat?好的,我会坚持你所做的。@CaptainCrunch好的,你可以做函数cat(){返回这个.a}
,然后使用cat.call({a:5})之类的东西提供这个
的值
。在这种情况下,它有点迂回,更容易传递指令。但是,我明白,没有其他方法可以更改函数的上下文-如果cat
无法访问变量,那么它就不会使用它。@CaptainCrunch我的意思是,你可以修改一些东西,但我不推荐。谢谢你的回答!我想你可能需要这样做,但是有没有办法通过cookie将一个函数绑定到一个cat,而不需要编辑cat?好的,我会坚持你所做的。@CaptainCrunch好的,你可以做函数cat(){返回这个.a}
,然后使用cat.call({a:5})之类的东西提供这个
的值
。在这种情况下,它有点迂回,更容易传递agment。但是,我理解,没有其他方法可以更改函数的上下文-如果cat
无法访问变量,那么它就不会使用它。