Funkcionális javascript - minden, ami web design
eljárási jellemzők
Az elején volt egy funkció ...
Szinte minden programozási nyelv olyan szerkezetű, mint ez. Minden programozó a világ ismeri ezt a szintaxist. „Hello” a neve a függvényt, de mi történik, ha létre hellotak ugyanaz, mint a változó?
Funkció változóként
Lehet, hogy egy kicsit szokatlan szintaxist, de a legtöbb programozó legyen kényelmes dolgozni egy függvény, amely a meghatározás szerint változtatható.
Ez lesz az azonos funkciók és átadhatók paraméterként a funkció, valamint minden más változó.
Transfer Function Function
Ha kijelentjük egy „hello”, mint egy változó, akkor adja át paraméterként a funkciót.
Kétféle módon lehet használni a funkciót érvként. Tudod ki a mutatót a funkció is, vagy el tud végezni egy függvény, amely visszaadja a funkciót is. A fenti példában egy mutatót „hello”, hogy a változó a „mi” a „mondani” funkciót. „Mi” vált egy mutató a „hello”.
Ez a példa a „lóg” felvezető „doSomething” esetén onclick. Mivel csak a nevét, a funkció, és nem a hívást. Másrészt, ha a „doSomething ()” függvény is visszaadja az összes még működött volna jól.
névtelen függvények
Ez létrehoz egy eseménykezelő kattintással. Ha megnyomja a gombot, akkor ezt a funkciót, akkor anonim, mert nem jelenti be a nevét, és nem tudjuk nevezni egyébként legkésőbb onmousedown.
Self-függvényhívás
Nézd meg az alábbi kódot
Felhívjuk figyelmét, hogy az „x” nem tartalmaz egy névtelen függvényt, és a munkája eredményét. Anonymous funkció van éppen elég volt, hogy továbbítja az eredményt a változó „x”.
Itt egy valós példa:
A függvény létrehoz egy script elemet azon az oldalon, és megnyitja azt egy harmadik fél forgatókönyvet. Ebben az esetben a függvény önmagában nem létezik, miután annak végrehajtását, és nem veszi fel memóriát. Ez nagyon kényelmes, például amikor egy funkció csak egyszer kell elvégezni, és nem akarja, hogy dolgozzon ki egy nevet neki.
Ön is használja a saját kihívás, hogy a névtelen függvényt, amikor szükség van, hogy a feldolgozás minden adatot, mielőtt benyújtja azokat a funkciót.
Ebben a példában ez az úgynevezett normális doAlert, de hivatkozni anonim önálló hívó függvény paraméterként. Persze olyan módon, akkor nem csak akkor okoz névtelen függvényt:
Amely egyenértékű a hagyományos hívási funkciók más programozási nyelvek
Előre tekintve azt, hogy a megkötését bármely kódot funkció korlátozza az a változó, így könnyen megoszthatja különböző könyvtárakban (jQuery, Prototype).
A legtöbb jQuery plug-inek így leírva, amely lehetővé teszi, hogy használja őket, amennyire csak lehetséges kompatibilis más keretek között. De persze, semmi sem akadályozza meg, hogy írjon ugyanabban a stílusban és a prototípus.
Működésének megértéséhez pointer
CopiedFunction változó egy mutatót a memória blokk, amelyben a funkció originalFunction „hello world”. Amikor később változtatni az eredeti funkciót a „goodbyeworld” copiedFunction majd visszaad egy pointert az eredeti funkciója „hello world”.
funkció hatálya
Figyelmeztetés: Ha nyilvánítja egy új változót anélkül, hogy a kulcsszó „var” egy ilyen változó az egyik tulajdonságait a globális objektum windowi globálisan elérhető.
Továbbá a funkció lehet nevezni, mint window.subFunction ();
A függvény objektum
myAggau egy objektum, amely a tulajdonságok és módszerek, amelyek közösek az összes tömböt, és amely lehet hosszabbítani. Amikor hurok myArray megkapjuk csak [1] [2] [3] (1,2,3), tulajdonságok ( „egy”, „két”, „három”) nem része a tömb csak tulajdonságait annak tárgyát. Annak érdekében, hogy ne menjen túl a határokat a tömb myArray, szoktuk .length tulajdonság, hogy megtalálják az elemek száma is.
Tárgyak és módszerek funkció
Minden funkció a következő tulajdonságokkal rendelkezik:
érvek - tömb / objektum, amely az argumentumokat át a funkciót
arguments.length - Üzletek száma érvek a tömbben
arguments.callee - egy pointert a funkciója (lehetővé teszi a használatát névtelen függvények rekurzív).
hossza - száma érvek várható myfunc funkció (x, y) = 2.
kivitelező - a kivitelező függvénymutatóval.
prototípus - lehetővé teszi, hogy a függvények prototípusai minden objektum.
Minden funkció a következő módszerek:
alkalmazzák - olyan eljárás, amely megkönnyíti, hogy adja át a függvényargumentum (érvek szolgált egy tömb, és a „, amely lehetővé teszi, hogy módosítsa a globális hatókörű funkció, amely lehetővé teszi, hogy hívja a funkciót más kontextusban).
hívja - ugyanaz, amely alkalmazni, csak az érveket egyenként, valamint a közönséges funkciót.
toSource - visszaadja a forráskód a funkciót, mint egy húr.
toString - visszaadja a forráskód a funkciót, mint egy húr.
valueOf - visszaadja a forráskód a funkciót, mint egy húr.
Működésének megértéséhez érvek
Ha van egy funkciója nyilatkozat
Akkor hívja a függvény az alábbiak szerint.
Ha myfunc okozta (1) a B és C típusú lesz „definiált” és láthatjuk ezt több szempontból is.
Mint látható, „nem meghatározott” hamis állapot, így használhatja logikai operátorok észlelni, ha az érv nem volt beállítva, és javítsa ki. Egy harmadik eljárás ellenőrzésére a legbiztonságosabb találni bizonytalan az érveket, mert az 1. és 2. fog működni az értéke false, „” 0.
hosszát és arguments.length tulajdonságok lehetővé teszik, hogy ellenőrizze a várható száma érveket, és a számos érvet, amely valójában telt el. Például:
Mint látható, a funkció elvárja 3 érvek, de van, csak 1!
Az érvek Array
A fenti példánkban a, b, c és megmutatja a változók, hogy már használják, hogy az első három érv. Ha az argumentum a vártnál kisebb, akkor a változók lesz a „meghatározatlan”, ha nem lesz több, mint az várható volt, ők továbbra is elérhető lesz számunkra az egy tömbben érvek
A tapasztalat azt mutatja, hogy az érvek tömb az összes tulajdonságok és módszerek rendelkezésre a szokásos tömbök, így ha szeretné használni a módszert (rendezés, illesztési, szelet, stb), akkor meg kell tennie a következőket:
Hogyan átadni paraméterként más funkciót
Időről időre, amikor valaki megkérdezi, hogyan kell átadni paraméterként függvényében érvként a másikra. Például:
Arra szolgál, 10 érv myfunc myfunc és megpróbálják átadni nekik otherFunc hanem átadja érvek egy tömbben, hanem mint egy argumentumlistában. Mi lehet megkerülni ezt a hívást, hogy a módszer alkalmazandó, amely majd átadja egy sor érvet mint argumentumlistában egy új funkció