我很难弄清楚如何将变量重新分配给新函数。
我有两个分配给变量的匿名函数,我希望“first”在调用一次后将其自身分配给“after”。
在Firefox中使用.toSource时,似乎首先要重新分配,但“点击处理程序中的第一个仍然是引用或调用在运行时创建的第一个。
为什么会这样?
JS
var after = function() {
alert("AFTER");
}
var first = function() {
alert("FIRST");
//alert(first.toSource());
first = after;
}
$(".order").click( first );
HTML
<button type="button" class="order">Order</button>
答案 0 :(得分:5)
当您拨打此电话时:
$(".order").click( first );
您在此次通话时使用first
的值。它当时的值是传递给click()
函数的值。
稍后更改first
变量的值不会影响此。
另一种看待它的方法:考虑jQuery的click()
方法中的代码。它不知道您在通话中使用了first
变量。它唯一的信息是first
在通话时引用的功能。
请参阅@ tymeJV的答案,了解如何做你想做的事。请注意它的不同之处:您传递给.click()
(匿名函数)的函数不必更改。当该函数调用first()
时,它始终使用该名称的当前值。
答案 1 :(得分:5)
跟进@MichaelGeary的回答,如果你想通过这样的引用来使函数工作,那么把你的函数调用放在一个匿名函数中:
$(".order").click( function() {
first();
});