Bir işlevi döndüren fonksiyonlar - Javascript
'Son zamanlarda JavaScript ve bu kavram ile sıkışmış olduğumu öğrenmeye başladım 'İşlevler'. fonksiyonlar I Kitap 'Odaklı Javascript' Stoyan Stefanov tarafından. Nesne bahsediyorum Java, C ve C ve iş deneyimi de 2 yıl benim bilginin uygulanması aynı önceki programlama deneyimi var.
Bir Parçacık:
function a() {
alert('A!');
function b(){
alert('B!');
}
return b();
}
var s = a();
alert('break');
s();
Çıkış:
A!
B!
break
İki Parçacık
function a() {
alert('A!');
function b(){
alert('B!');
}
return b;
}
var s = a();
alert('break');
s();
Çıkış:
A!
break
B!
Biri bana b
dönen ve b()
yukarıdaki parçacıkları arasındaki farkı söyleyebilir? Google'da bir şeyler aramaya çalıştım ama herhangi bir değerli bağlantılar alamadım. Eğer birisi de bana bazı bağlantılar açıklanarak verirse memnun olurum. Teşekkür ve Saygılarımızla.
CEVAP
Bir fonksiyon (parantez olmadan) için bir değişken atama işlevi referans kopyalar. Fonksiyon adının sonunda parantez koyarak, çağrı işlevi, işlevleri değeri geri dönüyor.
Demo
function a() {
alert('A');
}
//alerts 'A', returns undefined
function b() {
alert('B');
return a;
}
//alerts 'B', returns function a
function c() {
alert('C');
return a();
}
//alerts 'C', alerts 'A', returns undefined
alert("Function 'a' returns " a());
alert("Function 'b' returns " b());
alert("Function 'c' returns " c());
Örnek, ayrıca bir fonksiyon içinde işlevlerini tanımlama. Gibi:
function d() {
function e() {
alert('E');
}
return e;
}
d()();
//alerts 'E'
İşlevini hala çağrılabilir. Yine de var. Bu JavaScript her zaman kullanılır. Fonksiyonları etrafında geçirilebilirsadecediğer değerler gibi. Aşağıdakileri göz önünde bulundurun:
function counter() {
var count = 0;
return function() {
alert(count );
}
}
var count = counter();
count();
count();
count();
Fonksiyon sayısı dışında tanımlanan değişkenleri tutabilir. Bu kapanışı olarak adlandırılır. Ayrıca JavaScript içinde çok kullanılır.
Neden JavaScript işlevi benim isim çat...
Nasıl iyi bir argüman JavaScript işlev...
Javascript iÅŸlevi var kontrol edin...
JavaScript kapatma vs anonim fonksiyon...
Daha iyi bir ÅŸekilde Javascript iÅŸlevi...