如何从jQuery中的函数内部获取外部变量?

这个问题在这里已经有了答案:

  • JavaScript中变量的范围是什么? 25个答案

  • 第二个例子工作的原因是因为您将myvar定义为全局变量(可从任何地方访问)。

    第一个例子不起作用,因为变量是在功能范围内定义的(这意味着除了该函数的作用域以外,所有函数都不可访问该变量,以及在该父函数范围内定义的函数范围)。

    正如评论中所述,这只是JavaScript的工作原理。 如果这是您遇到的问题,那么现在可能是重新考虑您的架构的时候了。

    一种常见的模式是将共享变量定义为父对象或函数的属性。 例如:

    $(function() {
        var funcOne = function() {
            this.sharedVal = 'stack overflow';
        };
        var funcTwo = function() {
            console.log(funcOne.sharedVal);
        };
    });
    

    通过这种方式,您可以拥有不同的功能,可以在其他功能中与其他功能共享其属性,同时还可以保持全局名称空间的清洁。 但是请注意,在这个例子中,一个简单的var x = 'something'; 不作为另一个函数的属性绑定也可以。


    它的全部关于范围,在你的第二个例子中,myvar在全局范围内,而在第一个范例中它包含在函数中。

    你可以强制它成为全球性的:

    $(function(){
      window.myvar = "stackoverflow";
    });
    
    $(function(){
      alert(myvar);
    });
    

    (假设这是在浏览器中)


    这是由于变量的范围。 在$(function()中定义的变量在这个函数内部有作用域,这里的enclusre描述了作用域,外部函数中定义的变量具有全局作用域,并在窗口对象中定义。

    功能范围内。

    $(function(){
        var myvar = "stackoverflow";
    });
    // myvar is not accessible here. 
    

    窗口对象内部的范围。

    $(function(){
        window.myvar = "stackoverflow";
    });
    
    // myvar is accessible here. 
    
    链接地址: http://www.djcxy.com/p/40817.html

    上一篇: How to get variables from the outside, inside a function in jQuery?

    下一篇: How do I do a deep copy of a 2d array in Java?