簡體   English   中英

何時在javascript中聲明一個新的(匿名)函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM