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
无法访问变量,那么它就不会使用它。