Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript&;自执行函数_Javascript_Jquery_Function - Fatal编程技术网

JavaScript&;自执行函数

JavaScript&;自执行函数,javascript,jquery,function,Javascript,Jquery,Function,我试图理解(可能是简单的概念)关于JS的内容,我将下面的代码放在一起解释我没有理解的内容。我不明白的是name变量存储在哪里。这个变量现在是全局变量吗 (function($) { var name = ''; $.helloWorld = function(yourName) { name = yourName; console.log("Hello " + yourName); } }(jQuery)); name变量是外部函数的局部变量,因为它是用var

我试图理解(可能是简单的概念)关于JS的内容,我将下面的代码放在一起解释我没有理解的内容。我不明白的是name变量存储在哪里。这个变量现在是全局变量吗

(function($) {

  var name = '';

  $.helloWorld = function(yourName) {
    name = yourName;
    console.log("Hello " + yourName);
  }

}(jQuery));

name
变量是外部函数的局部变量,因为它是用
var
关键字声明的。内部函数是一个闭包,包含对该变量的引用。这里有一个更好的例子来说明这一点:

(function($) {

  var name = '';

  $.setName = function(newName) {
    name = newName;
  }

  $.showName = function() {
    console.log("Name is: " + name);

}(jQuery));
定义后,您可以执行以下操作:

$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();

请参见
name
变量是外部函数的局部变量,因为它是用
var
关键字声明的。内部函数是一个闭包,包含对该变量的引用。这里有一个更好的例子来说明这一点:

(function($) {

  var name = '';

  $.setName = function(newName) {
    name = newName;
  }

  $.showName = function() {
    console.log("Name is: " + name);

}(jQuery));
定义后,您可以执行以下操作:

$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();

请参见

这将有助于您理解:

(function(){

    var name;
    var scope1;

    // Here you can use scope1 and name

    (function(){

        var name;  //  <------------------------
        var scope2;                         // |
                                            // |
        // Here you can use scope1,scope2, and name

        (function(){

            var name;   //  <------------------------------
            var scope3;                                 // |
                                                        // |
            // Here you can use scope1,scope2,scope3, and name

        })();

     })();

})();

// Any\variable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;
(函数(){
变量名;
var作用域1;
//在这里,您可以使用scope1和name
(功能(){

var name;//这有助于您理解:

(function(){

    var name;
    var scope1;

    // Here you can use scope1 and name

    (function(){

        var name;  //  <------------------------
        var scope2;                         // |
                                            // |
        // Here you can use scope1,scope2, and name

        (function(){

            var name;   //  <------------------------------
            var scope3;                                 // |
                                                        // |
            // Here you can use scope1,scope2,scope3, and name

        })();

     })();

})();

// Any\variable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;
(函数(){
变量名;
var作用域1;
//在这里,您可以使用scope1和name
(功能(){

var name;//变量的作用域是该闭包,这是IIFEs的点,用于封装代码而不是将变量泄漏到外部作用域。变量的作用域是该闭包,这是IIFEs的点,用于封装代码而不是将变量泄漏到外部作用域。谢谢,但是如何从helloWorld函数访问name变量?有什么方法可以使用Java的this关键字吗?您可以通过名称引用它(就像任何其他变量一样)。您可以让helloWorld函数像这样打印它的值:
alert(name)
好的,所以我也应该避免使用内部函数参数名,因为它与外部函数变量名冲突,因为我不能像Java那样真正区分它们。是的。这些只是嵌套的函数作用域,而不是对象。好的,谢谢!将这一个标记为正确答案,因为它既是第一个答案,也是第二个答案显然答案是正确的:-)谢谢,但是我如何从helloWorld函数中访问name变量?有没有办法让Java使用这个关键字?您可以通过名称来访问它(就像任何其他变量一样)。您可以让helloWorld函数像这样打印它的值:
alert(name)
好的,所以我也应该避免使用内部函数参数名,因为它与外部函数变量名冲突,因为我不能像Java那样真正区分它们。是的。这些只是嵌套的函数作用域,而不是对象。好的,谢谢!将这一个标记为正确答案,因为它既是第一个答案,也是第二个答案显然是一个正确的答案:-)谢谢你把它充实了一点。提升你的努力!谢谢你把它充实了一点。提升你的努力!