【问题标题】:How to access the inner function's variable from outer function with jQuery?如何使用jQuery从外部函数访问内部函数的变量?
【发布时间】:2013-09-04 14:29:22
【问题描述】:

我已经看到了从内到外的访问函数,但是我找不到关于如何从外部函数访问内部函数变量的确切答案使用 JQUERY,而不是 javaScript

下面有代码

$(document).ready(function(){
    var outv=1;
    function innerfunc(){
        var innerfuncv=2;
        var outv=3;
        alert(outv);

    };
    alert(outv);
    innerfunc();
    alert(outv);
    alert(innerfunc.outv);



});//$(document).ready(function() END

请帮忙。谢谢!如果需要更多信息,请告诉我。

【问题讨论】:

  • 关闭..你还没有听说过吗?
  • @Moazzam Khan,当有人支持初学者提问时,社区会变得更好,记住你是我们中的一员。
  • 如果没有 JavaScript,您将无法访问 任何 JavaScript 变量。
  • 当我们解释错误时,社区会变得更好,这样人们就不会重复而不是欣赏它。
  • @Moazzam Khan 你显然已经忘记了教学的主要内容。但是,我了解 SO 有这种“反对重复问题”的政策。好吧,将其投票为重复,并指出一个重复的问题,如果这就是你的意思。

标签: javascript jquery scope


【解决方案1】:

在函数之外定义它们。函数内部定义的变量只能被该函数访问,所以如果你想访问它们,你必须在函数外部定义它们。

$(document).ready(function () {
    var outv = 1;
    var innerfuncv;
    function innerfunc() {
        innerfuncv = 2;
        outv = 3;
        alert(outv);
    };
    alert(outv);
    innerfunc();
    alert(outv);
   /* alert(innerfunc.outv); this wont work*/
});

【讨论】:

  • 似乎下面的答案以一些有趣的方式解决了它,看看:)
【解决方案2】:

AFAIK,你不能这样做,一种选择是将你的上下文包装在一个对象中:

$(document).ready(function(){
    var outv=1;

    var inner = {
        innerfuncv:2,
        outv:3,
        innerfunc : function (){        
                       console.log(this.outv);
                    }
        }      
    console.log(outv);
    inner.innerfunc();
    console.log(outv);
    console.log(inner.outv);
});

【讨论】:

    【解决方案3】:
    $(document).ready(function(){
        var outv=1;//you can access this any where within dom ready..
        function innerfunc(){
           var innerfuncv=2;//this is a local variable and its scope is within function
             outv=3;//get rid of var when you have already declared it.
            alert(outv);//this will get overWritten..1 is replaced by 3
    
        };
        alert(outv);//will alert 1
        innerfunc();
        alert(outv);//will alert 3,not 1
    
    
    
    });//$(document).ready(function() END
    

    【讨论】:

    • 感谢您的提示和回答,但现在不能真正投赞成票,因为我得到了反对票,哈哈
    • 这很有帮助,但我认为 jbl one 更好,你检查了吗?很有趣,你觉得你的和他的相比怎么样?
    • 我发现不同之处在于他确实保持了 main 函数和内部函数中 outv 变量的分离,即使它们具有相同的名称,但是仍然感谢您的出色提示和非常有帮助的答案!享受:)
    猜你喜欢
    • 2020-03-03
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2017-05-25
    • 2020-10-20
    • 2011-04-15
    • 2012-12-31
    相关资源
    最近更新 更多