JavaScript-de funksional ifadeleriň nyuanslary
Funksion Ifade atlandyrmasy boşuna berilmedik. Bu hakykatdanam şuny aňladýar - ýagny şeýle funksiýalar käbir ifadäniň bir bölegidir.
Mysal üçin, biz käbir setir we atsyz funksiýany goşup bileris:
let str = 'str' + function() {return 3;};
console.log(str); // 'strfunction() {return 3;}' görkezer
Näme üçin biz şeýle bir geň netije görýäris,
3 san däl? Sebäbi ikinji goşulyjy
- bu funksiýanyň işiniň netijesi däl, onuň çyndan
kody (hatda biz bu funksiýany çagarmadyk, diňe
ýazdyk).
Ýagny funksional ifade atlandyrmasy şuny aňladýar, ýagny şeýle bir funksiýa käbir bir ifadäde gatnaşýar.
Üýtgeýjä bellik etmekem ifadedir:
let func = function() {
console.log('!');
};
Şeýle hem, mysal üçin, funksiýany
console.log parametri hökmünde geçirip bileris we ol çyndan
kody konsola görkezer - bu hem
ifade hasap ediler:
console.log(function() {return 3;});
Bu näme üçin möhüm: sebäbi Funksiýa Deklarasiýasy we Funksion Ifade arasyndaky tapawut doly şeýle däl, ýagny birinji funksiýa ady bilen döredilýär, ikinji bolsa başlangyçda ada eýe däl. Şeýle däl.
Mysal. Şu ýerde bizde ada eýe däl funksiýa bar, ýöne şol bir wagtyň özünde hiç hili ifadede gatnaşmaýar (ýagny ona hiç hili hereket amal edilmeýär, ýöneje düşündirişde):
/*
Bu funksiýa Funksiýa Deklarasiýasy bolar,
ýöne sintaktik ýalňyşlyk bilen:
*/
function() {
console.log('!');
}
Şeýle kody ümumen ýalňyşlyk görkezer! Näme üçin: şeýle bolsa funksiýa hiç hili ifadede gatnaşmaýar, şonda brauzer ony Funksiýa Deklarasiýasy hasaplaýar, ýöne onuň adyny tapmaýar we ýalňyşlyk görkezýär.
Ýalňyşlygyň ýitmegi üçin, funksiýanyň
käbir ifadäniň bir bölegi bolmagyna mejbur etmeli. Mysal üçin,
onyň öňünde + amalyny ýazýarys:
+function() { // şeýle kod dogry
console.log('!');
};
Bu nädip işleýär: + amaly özi
hiç zat etmeýär, bu diňe şeýle
ýazmak ýaly 3 sanynyň ýerine +3 san - ýöňke,
ýöne hiç zat üýtgetmeýär.
Ýöne funksiýa bilen bolsa - üýtgedýär. Indi bizim funksiýamyz diňe ýazylyp galmaýar, eýsem ifadede gatnaşýar. Şonuň üçin indi ýalňyşlyk bolmaz. Funksiýanyň işleniş netijesi hem bolmaz, hatda biz ony diňe ýazdyk, ýöne çagarmadyk.
+-iň ýerine islendik zat ýazyp bolýar.
Mysal üçin:
-function() { // şeýle kod dogry
console.log('!');
};
!function() { // şeýle kod dogry
console.log('!');
};
Şeýle hem, funksiýamyzy aýlawly skobkalyryp alyp bolýar, bu ýagdaýda hem ol funksional ifade bolar:
(function() { // şeýle kod dogry
console.log('!');
});
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
function func() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
let func = function() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
+function() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
!function func() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
-function func() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
1 + function func() {
console.log('!');
}
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
(function func() {
console.log('!');
})
Görkezilen funksiýanyň Funksiýa Deklarasiýasy ýa-da Funksion Ifade dygyny kesgitläň:
console.log(
function() {
console.log('!');
}
);