javascript функции обрабатываются как DATA. Таким образом, вам разрешено использовать функции как переменные.
В следующей строке
myPet = pet("Vivie");
то, что вы на самом деле делаете вызов домашнее животное функцию, подведению возвращенной функции и положить его в myPet.
Но когда вы код это, функция
myPet();
вы звоните myPet() [возвращенный функцией от любимца]. И это точный myPet, который вы получили после того, как вы назначили домашнее животное.
Именно по этой причине вы код myPet(); вызывает функцию.
Теперь Вот интересная вещь,
Когда вы код этого
var pet = function(name) {
return console.log(name);
},
myPet = pet("Vivie");
это работает !!!! Почему он работает тогда ???
Здесь, когда вы звоните, домашнее животное Функция it it console закрывает ваше имя и возвращает консоль. Он не возвращает никакой функции.
Но в вашем коде в myPet вы получаете функцию.
Позволяет проверить то, что мы понимаем, видя тип возвращаемого объекта из любимца,
В вашем случае:
var pet = function(name) {
var getName = function() {
return console.log(name);
}
return getName;
}
var myPet = pet("Vivie");
console.log(typeof myPet); // consoles : function.
Вы вызываете любимца, но вам ничего не выполняют внутри возвращаемой функции. Скорее вы говорите, что вы можете выполнить эту возвращенную функцию, используя myPet.
Другой случай:
var pet = function(name) {
return console.log(name);
}
var myPet = pet("Vivie"); // consoles : Vivie
console.log(typeof myPet); // consoles : undefined
Сначала вы выполняете домашнее животное и вернуть консоль, которая почему, когда вы просите TYPEOF myPet вы не получите какой-либо определенный тип.
И, наконец, если вы хотите немедленно вызвать возвращенную функцию, вы должны пойти с помощью функции самозапускания таким образом.
myPet = pet("Vivie")();
Мораль:
myPet = pet("Vivie");
Здесь myPet относятся к домашним животным . И
myPet();
здесь myPet вызывает любимца.
Ссылки:typeof
'myPet = домашнее животное (Виви),' 'называет pet', но это не вызывает' getName'. –