如何使用jQuery从外部函数访问内部函数的变量?

时间:2013-09-04 14:29:23

标签: javascript jquery scope

我已经看到了从内到外的访问功能,但是我找不到关于如何使用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

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

3 个答案:

答案 0 :(得分:4)

在函数外部定义它们。函数内定义的变量只能用于该函数,因此如果要访问它们,则必须在函数外部定义它们。

$(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*/
});

答案 1 :(得分: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);
});

答案 2 :(得分:1)

$(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