Я пришел из C # / PHP и пытаюсь понять идею Javascript о том, что функции являются переменными / объектами и имеют квази-конструкторы и т. Д.
Может кто-нибудь объяснить, почему следующий код функционирует так, как она именно:
- Почему при создании переменной / функции не отображается «2»
test
? - Почему при выполнении переменной / функции не отображается «1»
test
?
код:
var setup = function () {
console.log(1);
return function() {
console.log(2);
};
};
var test = setup(); // 1
test(); // 2
test(); // 2
test(); // 2
добавлено:
Спасибо @thejh @Justin за то, что функция возвращает совершенно другую функцию это не имеет ничего общего с первой (я думал о второй функции как о неком конструкторе первой), если я закомментирую это, то будет понятнее:
$(document).ready(function() {
var setup = function () {
console.log(1);
// return function() {
// console.log(2);
// };
};
var test = setup(); // 1
test(); // "test is not a function"
test(); // "test is not a function"
test(); // "test is not a function"
});