2013-09-04 5 views
0

Это может быть глупый вопрос, но я повсюду искал и приближался к SO в качестве последнего средства. Мои сомнения функция IIFE обычно выглядит следующим образомПередача значений в функцию IIFE

var me = (function() { /*code*/})(); 
me();      

я не видел какой-либо код, который имеет переменные передающиеся в него до сих пор. Возможно ли передать значения функции IIFE? Я уже пробовал использовать

var Person = (function(name,age){ 
    this.name = name; 
    this.age = age; 
    }()); 
    Person("Bob Smith", 30); 

который дает мне неопределенную ошибку.

Итак, есть ли способ передать эти значения в IIFE или его следует избегать?

+1

Почему вы используете IFEE для определения конструктора? По крайней мере, вы должны вернуть функцию! В вашем случае Person возвращает undefined, вы не можете использовать его как конструктор. –

+0

Спасибо, я все еще очень смущен, когда следует использовать IIFE. – Bazinga777

+1

IIFE - это функция, которая мгновенно вызывается. Вы можете установить свои параметры в самом ИИФ: '(function (x) {console.log (x);}) (123)' будет записывать 123, но выполняет 'var f = function (x) {console.log (x);}; f (123) 'производит ** точно такой же результат ** –

ответ

1

Это было бы IIFE с параметрами:

(function (a, b) { 
    alert(a + b); 
}('hello', ' world')); 


То, что вы, кажется, делают, а другие говорили, является конструктором, так что нет никакой необходимости в них нет.

Вы могли бы сделать конструктор таким образом, если вы хотите:

function Person(name, age) { 
    this.name = name; 
    this.age = age; 
} 

var bob = new Person('Bob Smith', 30); 

Вы могли бы сделать анонимно вызывается конструктор, но это бессмысленно, так как это один использование тип сделки, и вы не потребуется конструктор для этого.

Смежные вопросы