[英]When to declare a new (anonymous)function in javascript?
我對javascript中的函數操作有點困惑。 我知道它們都是對象,但是如何改變我將它們用作參數的方式呢?
例如,如果我正在嘗試使用回調函數,其中第二個參數在1000ms之后被評估...
$(this).fadeIn(1000,function(){alert('done fading in');});
為什么我不能達到同樣的效果:
$(this).fadeIn(1000,alert('done fading in'));
如果我這樣做,它會同時評估兩者。 也就是說,(this)元素淡入並且警報同時彈出。
當我調用alert(arg)時,是不是我創建了一個傳遞給fadeIn()的新對象?
這究竟是如何工作的?
在這
$(this).fadeIn(1000,alert('done fading in'));
fadeIn()看到的第二個參數是什么? 這是打電話的結果
alert('done fading in')
我們在調用fadeIn() 之前調用alert()。
在這種情況下
$(this).fadeIn(1000,function(){alert('done fading in');});
我們有一個對象
function(){alert('done fading in');}
fadeIn()在正確的時間調用。
當你寫:
$(this).fadeIn(1000,alert('done fading in'));
通過在此名稱后面添加函數名稱和括號,可以調用函數alert immadiately。 並且fadeIn傳遞了這個調用的結果 - 這是未定義的,因為alert返回總是未定義的。
當你寫作
$(this).fadeIn(1000,function(){alert('done fading in');});
您創建一個函數對象,並將此函數對象傳遞給fadeIn。 所以在完成fadeIn之后它可以調用這個函數。
它與:
// create function
var callback = function () { alert('done fading in'); };
// and pass this function to fadeIn
$(this).fadeIn(1000, callback);
但是當你寫:
var callback = alert('done fading in');
$(this).fadeIn(1000, callback);
然后你將immadiately調用alert並傳遞給fadeIn值,警報返回 - undefined。
在第一行中,第二個參數是方法。 在第二行它是一個方法調用。
你也可以這樣寫
function fadeInCallback() {
alert('done fading in');
}
$(this).fadeIn(1000, fadeInCallback);
所以我們做的是傳入對fadeInCallback的引用,這樣jQuery fadeIn函數可以在衰落完成后調用fadeInCallback。
第二行將執行
alert('done fading in');
在執行jQuery fadeIn函數之前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.