SORU
25 NİSAN 2012, ÇARŞAMBA


JavaScript.setTimeout

JavaScript öğreniyorum ve yeni JavaScript Zamanlama Olayları öğrendim. bu link:http://www.w3schools.com/js/js_timing.asp yaklaşık JavaScript setTimeout Yöntemini öğrendim

Önce rastlamasaydım garip bir şekil fark ettim. Yukarıdaki linkten w3schools ayarlar olarak setTimeout Yöntemini ayarlayın. Çift tırnak kullanarak ve sonra işlev çağrısında bulunuyorlar.

Örnek:

setTimeout("alertMsg()",3000);

Bir çift tek tırnak, tırnak içinde olduğunu biliyorumJSdemek bir Dize. ayrıca böyle aynı yapabileceğimi gördüm

setTimeout(alertMsg,3000);

parantez içinde kendi kopyalanan olmadan parantez onun atıfta bulunarak,söz. Tırnak ve parantez almak deli kullanıyorum. Eğer bazı biri bana üç garipliği açıklayabilir eğer memnun olacaktır anlamadığım ilk böyle: bu yöntemi kullanıyor

setTimeout("alertMsg()",3000);

(parantez içinde). ikinci tırnak ve bu gibi: parantez ile

setTimeout(alertMsg,3000);

ve üçüncü kullanıyorum.

setTimeout("alertMsg",3000);

Tırnak ve parantez olmadan.

GÜNCELLEME

SetTimeout başvuru için iyi bir kaynak MDN olurdu

CEVAP
25 NİSAN 2012, ÇARŞAMBA


setInterval setTimeout

setTimeout setInterval ilk argüman olarak bir fonksiyon için bir referans geçmesi. Bu başvuru formunda olabilir:

  • İsimsiz bir fonksiyon

    setTimeout(function(){/* Look mah! No name! */},2000);
    
  • Varolan bir işlev bir ad

    function foo(){...}
    
    setTimeout(foo, 2000);
    
  • Varolan bir fonksiyonu işaret eden bir değişken

    var foo = function(){...};
    
    setTimeout(foo, 2000);
    

    Ben set yapmak not "bir işlevi""". işlev adı ayrı ayrı değişken Değişkenler ve fonksiyon isimleri aynı ad işgal ve birbirimizi hırpalamak bu belli değil.

Geçen argümanlar

Bir işlev çağrısı ve parametreleri geçirmek için, geri arama içinde işlevi zamanlayıcı atanan diyebilirsiniz:

setTimeout(function(){
  foo(arg1, arg2, ...argN);
}, 1000);

İşleyici, ancak it's not cross-browser compatible içine değişkenler geçmek için başka bir yöntem yoktur.

setTimeout(foo, 2000, arg1, arg2, ...argN);

Geri arama bağlamı

Varsayılan olarak, idam ne zaman geri arama (işlevi zamanlayıcı tarafından adlandırılan içinde this değeri) kapsamında 26 ** genel nesne. Değiştirmek istiyorum, bind kullanmalısınız.

setTimeout(function(){
  this === YOUR_CONTEXT; // true
}.bind(YOUR_CONTEXT), 2000);

Güvenlik

- Gerçi, ama 37 ** setTimeout setInterval. Bir dize gönderme setTimeout() setInterval() bir işlevi 39**, rasgele ve potansiyel olarak zararlı betik çalıştırma mümkün kılan o eval() benzer kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013
  • RickardRick

    RickardRick

    9 Mart 2007
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007