Я новичок в Javascript, но имею глубокие исходные языки OO, такие как С#, Java, C++... В Javascript есть концепция, называемая анонимными функциями. Вот пример кода:
( function() {
for(var x = 0;x<5;x++) {
console.log(x);
}
})();
Как я понял, в скобках в конце заставляют функцию вызывать себя. Существует и другой синтаксис, который делает то же самое:
var x = function() {
for(var x = 0;x<5;x++) {
console.log(x);
}
}();
Но прямо сейчас, если я пытаюсь использовать x
, он не выполняет функцию снова. Итак, какова цель при использовании задания во второй версии? Могу ли я использовать функцию через x
снова?
Функция самоисполнения известна как IIFE (Expression Expression Function Expression), она обычно используется для управления областью определения, поэтому вы не получаете много глобальных переменных.
Например, эта функция действует как денежный ящик, она инкапсулирует всю информацию о ваших "деньгах", поэтому вы можете вставлять деньги или получать общие деньги, но вы не можете напрямую вызывать добавление/получение и доступ к переменной.
Он также может использоваться как форма ООП, так как вы уже очень хорошо знакомы с ним
var myMoneyBox = (function() {
var money = 0;
function addMoney(x) {
if (x > 0)
money += x;
}
function getMoney() {
return money;
}
return {
add: addMoney,
get: getMoney
}
})();
myMoneyBox.add(10);
console.log(myMoneyBox.get());
x
присваивается результат вашей функции, как и в любом другом выражении x = f()
, вы просто определяете f
внутри выражения. Он не имеет возвращаемого значения, поэтому в этом случае значение x
не undefined
.
Если вы хотите использовать x
для вызова функции, просто не добавляйте ()
в конец выражения...
Я думаю, это может помочь вам:
var x = function() {
for(var x = 0;x<5;x++) {
console.log(x);
}
};
x();
()
после функции, она немедленно вызовет ее и присвоит возвращаемое значение ( в вашем случае, undefined ). Удалите()
и если вы хотите вызвать его немедленно, позвоните по следующей строке, например:x();