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).

Kapcsolódó cikkek