Доброго времени суток уважаемые форумчане,
Прошу гуру объяснить поведение вызова функции.
Если просто назначить обработчик, скажем click, то для передачи параметра нужно использовать возврат функции, чтобы обработчик сработал при этом самом клике. Однако при прямом вызове функции, функция не возвращается.
Вот такой пример:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<button>Тык</button>
<button>Другой Тык</button>
</body>
</html>
<script src = "207.js"></script>
document.addEventListener('DOMContentLoaded', docReady);
function docReady()
{
document.getElementsByTagName('button')[0].addEventListener('click', goOn('string'));
document.getElementsByTagName('button')[1].addEventListener('click', goThere);
}
function goOn(param)
{
return function ()
{
console.log(param);
}
}
function goThere()
{
goOn('another string');
}
При клике на первую кнопку в консоль ожидаемо попадает "string".
А при клике на вторую кнопку "another string" уже не выводится в консоль. Вроде всё должно работать goThere() запустил goOn('another string'), в goOn вернулась безымянная функция, которая должна в консоль вывести "another string".
Объясните пожалуйста, в чём причина.