To by mohla byť hlúpa otázka, ale pozrel som sa všade a prichádzam do SO ako posledná možnosť. Pochybujem, že funkcia IIFE zvyčajne vyzerá takto
var me = (function() { /*code*/} )();
me();
Zatiaľ som nevidel žiadny kód, ktorý by obsahoval premenné. Je možné odovzdať hodnoty funkcii IIFE? Už som vyskúšal použitie
var Person = (function(name,age){
this.name = name;
this.age = age;
}());
Person("Bob Smith", 30);
čo mi dáva nedefinovanú chybu.
Existuje teda spôsob, ako tieto hodnoty odovzdať do IIFE, alebo by sa mu malo zabrániť?
odpovede:
1 pre odpoveď č. 1Išlo by o IIFE s parametrami:
(function (a, b) {
alert(a + b);
}("hello", " world"));
To, čo sa zdá, že robíte, ako povedali iní, je konštruktér, takže ich tam nie je potrebné.
Týmto spôsobom môžete urobiť konštruktor, ak chcete:
function Person(name, age) {
this.name = name;
this.age = age;
}
var bob = new Person("Bob Smith", 30);
Mohli by ste urobiť anonymne vyvolaný konštruktor, ale to je zbytočné, pretože je to typ dohody na jedno použitie, a na to by ste nepotrebovali konštruktor.