Причина, по которой res
не определена, заключается в том, что функция, переданная в hide()
, не запускается до тех пор, пока не завершится анимация скрытия, но console.log(res);
вызывается без ожидания.Кроме того, как отметил Рам Сегев, в функции обратного вызова hide
определено res
, так что это единственное место в области видимости (доступное).
Что касается подсказки, не появляющейся, попробуйте изменить
$(document).on('contextmenu', 'button', function(e){
до
document.querySelector('button').addEventListener('contextmenu', (e) => {