Показать сообщение отдельно
  #1 (permalink)  
Старый 21.06.2019, 15:42
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

вызовы функций
Доброго времени суток уважаемые форумчане,
Прошу гуру объяснить поведение вызова функции.
Если просто назначить обработчик, скажем 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".
Объясните пожалуйста, в чём причина.
Ответить с цитированием