Javascript, függvények
Ha egy függvény hívás átadható hozzájuk értékek vagy érveket saját paramétereit. Funkciók gyakran érveiket, hogy kiszámolja a visszatérési értéket, amelynek az értéke a függvényhívás kifejezés. Amellett, hogy az érveket a hívás semmilyen funkciót átadott egy másik érték azt jelzi, Hívás esetén - az érték a kulcsszó ezt.
definiálása funkciók
A függvénydefiníció kulcsszóval kezdődik function kulcsszót. amelyekre a következő elemek vannak megadva:
Az azonosító, amely meghatározza a függvény neve
Egy pár zárójelbe a lista nulla vagy több azonosítót vesszővel elválasztva
Ezek az azonosítók fogja meghatározni a funkcióját a paraméter neveket a függvény törzsében lehet használni, mint a helyi változókat.
Ezek az utasítások alkotják a szervezet a a funkciója minden függvényhívás.
Az alábbi példa bemutatja néhány definíció funkciók formájában nyilatkozatok és kifejezéseket. Megjegyzendő, hogy az a funkció a kifejezési forma csak akkor hasznos, ha egy nagyobb kifejezés, mint például egy feladatot vagy függvényhívás, hogy valamilyen műveletet végeznek a nemrég bejelentett jellemzői:
A kifejezés függvényt meghatározó, éppen ellenkezőleg, nem hogy egy változót. Meghatározása során azonban a feltételeket megadhat egy függvény neve, mint a fenti számítás a faktoriális függvény, amely szükséges lehet a szervezetben a függvény nevezi magát. Ha a kifejezés egy függvény definíció magában foglalja egy, a név fog hivatkozni a funkció az objektum a hatálya alá ezt a funkciót. Tény, hogy a függvény nevét válik lokális változó csak a függvényen belül szervezetben. A legtöbb esetben a függvény nevét nem szükséges a kifejezés meghatározását, ami a definíció tömörebb.
Felhívjuk figyelmét, hogy a legtöbb (de nem mindegyik), a funkciók a példában szereplő bevallását. A return utasítás befejezi a működését és értékét adja vissza a kifejezés (ha meg van adva) a hívónak. Ha a kifejezést a return utasítás nem áll rendelkezésre, akkor a visszatérési érték definiálatlan. Ha nincs return utasítást a funkciót, a tolmács kövesse az utasításokat a szervezetben a funkció és visszatér a hívó értéke határozatlan.
A legtöbb funkciót a példáját értékének kiszámítása, és visszatér nyilatkozatot ad vissza ezt az értéket a hívónak. printprops () függvény kissé eltérő ebben az értelemben: az a feladata, hogy megjelenítse a objektumtulajdonság neveket. Nem kell, hogy visszatérjen egy értéket, így nincs utasítás a függvény visszatérési. printprops () függvény mindig visszatér az érték definiálatlan. (A funkció nem visszatérési érték, néha eljárásokat.)
Calling funkciók
A programkód alkotó test a funkció nem kerül végrehajtásra idején meghatározása funkciót, és abban az időben a hívást. Calling által elvégzett feladatok kifejezés a hívást. Hívás expressziója áll egy hivatkozó kifejezés egy függvény, amely visszaadja egy függvény objektum, majd egy zárójel egy listát a nulla vagy több kifejezést, érvek, vesszővel elválasztva, belül.
Ha a kifejezés egy függvényhívás egy hivatkozó kifejezés egy ingatlan -, ha a funkció egy tulajdonsága a tárgyat vagy elemet a tömb (azaz, módszer) - majd hívja expresszió egy olyan expressziós eljárás hívást. A következő kódrészlet néhány példáját mutatja kifejezést hívja a szokásos funkciók:
Amikor egy funkció, az összes kifejezést értékeljük érvek (megjelölt zárójelben), és a kapott értékeket használjuk érvek a funkciót. Ezek az értékek vannak hozzárendelve paramétereket, akiknek a neve szerepel a függvény definíciójában. A test a függvény meghívja a kifejezést paraméter visszaadja a vonatkozó érveket.
Ha hívja a normál függvény visszatérési értéke lesz az értéke a hívás kifejezés. Ha a függvény értéke elérése után vége a tolmács értékét adja vissza definiált. Ha a függvény egy eredményeképpen az utasítás végrehajtása visszatérés, a visszatérési érték a kifejezés, visszatérését követő utasítást, vagy meghatározatlan, ha a return nem kifejezés.
Módszer - nem más, mint a funkció, amely tárolja, mint egy objektum tulajdonság. Ha van egy funkciója func és a tárgy obj, lehetőség van egy olyan eljárást definiálnak az objektum obj a neve a módszer, az alábbiak szerint:
Leggyakrabban, ha hívja a módszerek a kezelési formát tulajdonságai a dot szereplő, de az is lehetséges, hogy egy forma címét a tulajdonságok a szögletes zárójelek segítségével. Például, mind a következő kifejezések olyan kifejezések hívás módszerek:
Érvek és visszatérési értéke a módszer hívás feldolgozása ugyanúgy, mint hív egy normális működését. Azonban a módszer hívás van egy fontos különbség: a hívás összefüggésben. A szállást kifejezést két részből áll: egy objektum (ebben az esetben obj), és a tulajdonság nevét (módszer). A jelen feltételekben hívja módszerek Object obj válik a felhívás keretében, és a funkciót szervezet képes hivatkozni ezt az objektumot a kulcsszó ezt. Például:
Módszerek és ez a kulcsszó központi szerepet játszik a paradigma az objektum-orientált programozás. Minden olyan funkció, hogy használják a módszert valóban megkapja implicit érv - egy tárgy, amellyel kapcsolatban úgy nevezték. Általános szabály, hogy a módszerek valamilyen műveletet végeznek az objektumra, és metódushívással szintaxis egyértelműen tükrözi az a tény, hogy a funkció működik az objektum.
Érvek a függvények paraméterei
argumentuma
Ha az argumentumok száma a funkció hívás száma kevesebb deklarált paraméter hiányzik érveket kapott érték nincs meghatározva. Gyakran célszerű írni, úgy működik, hogy bizonyos érvek opcionális, és elhagyható a függvény hívásakor. Ebben az esetben kívánatos, hogy a hozzárendelés kellően indokolt alapértelmezett értékek paraméterek elhagyhatók. Például:
Változó hosszúságú argumentumlistát
Ha ez a szám érvek függvényhívás száma meghaladja a paraméter nevét, funkcióját megfosztották attól a lehetőségtől, hogy közvetlenül hozzáférjen a névtelen értékeket. A megoldás erre a problémára nyújt érvei kifogást. A test a függvényargumentumok azonosító kifejezés egy tárgy érvei, jelen van a hívás. Object érvei - egy objektum, mint egy tömb, amely lehetővé teszi, hogy kivonat értékeket át a funkciót számuk helyett neveket.
Tegyük fel, hogy úgy definiáltuk func függvény, amely előírja, az egyik érv x. Ha ezt a funkciót két érv, az első elérhető lesz egy függvény nevű paraméter x vagy érveket [0]. A második paraméter csak paraméterként [1]. Ezen túlmenően, mint a jelen tömbök, érvek hossza az a tulajdonsága, hogy határozza meg a tartalmazott elemek. Azaz, a test a funkció funkcionális nevezzük két érv, arguments.length 2.
Funkciók, mint ez, és képesek fogadni számos érv a függvények egy változó számú argumentuma (variadic funkciók, változó argumentumainak száma funkciók vagy varargs funkciók). Ez a kifejezés származik az Advent a programozási nyelv C.
Figyeljük meg, hogy funkciók változó számú érveket nem szabad megengedni, hogy kezdeményezi egy üres argumentum lista. Célszerű lenne használni érveket objektum [] írásakor olyan funkció, amely elvárja, hogy kap egy meghatározott számú kötelező nevű érvek, majd adott egy tetszőleges számú névtelen argumentuma.
Nem szabad elfelejteni, hogy az érvek valójában nem egy tömb - egy tárgy érvei. Minden objektum érvei vannak számozva tömb elem és egy length tulajdonság, hanem egy technikai szempontból ez nem egy tömb. Sokkal jobb, hogy kezelje azt a tárgyat, hogy van néhány olyan tulajdonsága számlálva.
Amellett, hogy elemei a tömb érveket objektum határozza meg a tulajdonságait a hívott és a hívó. Amikor megpróbál változtatni az értékeket ezen tulajdonságok szigorú módban ECMAScript 5 garantált, kivéve Típushiba. Azonban a nem szigorú módban ECMAScript szabvány kimondja, hogy a hívott tulajdonság utal, hogy a jelenleg végrehajtó funkciót. Hívó ingatlan nem szabványos, de jelen van sok implementáció, és arra utal, hogy az úgynevezett aktuális funkciót.
Hívó tulajdonság eléréséhez használt hívás verem és a hívott tulajdonság különösen hasznos rekurzív hívások névtelen függvények:
Tulajdonságok és módszerek funkciók
A length tulajdonság
A test a funkció arguments.length tulajdonság meghatározza az átadott argumentumok száma a funkciót. Hossza azonban tulajdonsága a funkciót is mást jelent. Ez a tulajdonság csak olvasható, visszaadja a számos érvet, hogy a függvény fogja kapni - a szám a bejelentett paramétereket.
A következő kód határozza meg a függvény neve check (), kap egy csomó érveket érveit másik funkció. Ez összehasonlítja arguments.length tulajdonság (az argumentumok száma ténylegesen eltelt) az ingatlan arguments.callee.length (várható számát érvek) annak meghatározása, hogy a funkció eltelt annyi érv, mint gondolná. Ha az értékek nem egyeznek, kivételt dob. A készülék működését () kell tesztelni a funkció funk (), amely megmutatja, hogyan kell használni a készülék működését ():
prototípus ingatlan
Minden funkció egy prototípus tulajdon kifejezés egy ismert objektum, mint egy prototípus objektum. Minden funkcióhoz saját prototípus objektumot. Amikor a funkció használható a kivitelező, az újonnan létrehozott objektum örökli a tulajdonságait a prototípus objektum.
Prototípusok és prototípus ingatlan vitatták az előző cikkben.
hívja a () és alkalmazzák ()
hívja a () és alkalmazzák () lehetővé teszi, hogy végre közvetett függvényhívás, mintha valami más entitás. Az első érv, hogy mindkét módszer, hívja a () és alkalmazni (), átadásra kerül a tárgy, amelyhez képest a függvény neve; Ez az érvelés meghatározza a hívás összefüggésben válik az érték az ezt a kulcsszót a szervezetben a funkciót. A függvény funk () (paraméterek nélkül), mint a módszer az objektum obj, akkor bármelyik módszer, hívja a () és alkalmazzák ():
Ezen módszerek bármelyike hívja fel a következő ekvivalens fragmensét (ahol azt feltételezik, hogy az objektum obj egy tulajdonság nevű m):
A szigorú mód ECMAScript 5 első érv hívás () és alkalmazzák () válik ez az érték, akkor is, ha ez egy egyszerű, null vagy definiálatlan. A ECMAScript 3 és egy nem szigorú mód null és definiált értékek helyébe globális objektum, egyszerű érték - megfelelő objektum-pakolás.
Minden más érvek a módszer hívás () követően az első érv, meghatározza a hívás összefüggésben a hívó függvényben továbbítjuk. alkalmazni () metódus hívás működik, mint a módszer (), kivéve, hogy a érvek a funkció továbbított formájában tömb. Ha ezt a funkciót képes kezelni tetszőleges számú érvek vonatkoznak () metódus lehet használni, hogy hívja a funkció keretében egy sor tetszőleges hosszúságú.
A következő példa szemlélteti a gyakorlati alkalmazása a módszer hívás ():
bind () módszer
bind () metódus először ECMAScript 5, de ez könnyen szimulálására ECMAScript 3. Mint a neve is mutatja, a fő célja az eljárás bind () van társítani (bind) függvény az objektum. Ha hívja a bind () metódus funkció funkcionális és adja neki a tárgyat obj, akkor vissza egy új funkciót. Hívása az új funkciók (mint egy normál funkció) fogja hívni az eredeti funkció funkcionális, mint a módszer obj. Bármilyen argumentumokat az új funkciók átkerülnek az eredeti funkciót. Például:
Egy ilyen eljárás könnyen megvalósítható a kötési ECMAScript 3 az alábbiak szerint:
bind () módszer ECMAScript 5 nem csak a funkció az objektumot. Azt is végez részleges alkalmazása: Amellett, hogy ez az érték lesz csatlakoztatva az összes érvet át a módszer bind () után az első, aki érv. Részleges alkalmazás - kap egy közös funkcionális programozás és néha kikészítéséhez (kikészítéséhez).