Почему выполняется myFunc если я его даже не вызывал?
Почему вы решили, что не вызывали? Вы объявили объект с ключом и значением. Когда происходит парсинг кода браузером, то он читает и раскладывает его по полочкам, чтобы потом это как-то использовать. Вот он читает объект, у которого ключ myFunc
, а значение для этого ключа: результат вызова функции setInterval
. Он её и вызывает.
Чтобы внутри переменной хранилось объявление функции, нужно (сюрприз!!!) её и объявлять:
myVarible = {
myFunc: () => { // или вот так: function() {
setInterval(function() {
console.log('Why I am running');
}, 500);
}
};
console.log('всё нормально, ничего не выводится', myVarible.myFunc);
setTimeout(function() {
console.log('А вот теперь только мы запускаем функцию');
myVarible.myFunc();
}, 2000);