2017-07-04 44 views
-1

我不知道里面不确定为什么它的不确定,如果我声明,像这样:可变自调用函数

var mainBtn = $('.main-button'), 
    cloneFund = (function(mainBtn) { 
     console.log(mainBtn); // undefined 
     return arguments.callee; 
    })(); 

甚至:

var btn = $('.main-button'), 
    cloneFund = (function(btn) { 
     console.log(btn); // undefined 
     return arguments.callee; 
    })(); 
+2

因为你不传递任何参数到函数调用,'})();',函数参数覆盖变量在外部范围内,它们不共享值 –

+1

它只是我还是两个样本都是相同的,但只是不同的var名称? – guradio

回答

1

你应该有:

var btn = $('.main-button'), 
    cloneFund = (function(btn) { 
     console.log(btn); // undefined 
     return arguments.callee; 
})(btn); // need to add the argument when invoked 
1

你要通过mainBtn工作。

var mainBtn = $('.main-button'), 
 
    cloneFund = (function(mainBtn) { 
 
     console.log(mainBtn); // available 
 
     return arguments.callee; 
 
    })(mainBtn); // here you have to pass
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="main-button">Main Button</button>

+0

我明白了,但为什么anon函数不能访问变量? – 3zzy