Когда вы делаете так xhr.onreadystatechange = this.loadListener
вы приравниваете указатель на функцию, и теряете контекст выполнения.
Его нужно сохранить.
Сохраните через замыкание:
var that = this;
xhr.onreadystatechange = function() { that.loadListener(); }
Ajax(xmlHttpRequest), Web Sockets, Web Workers, Drag&Drop API, Shadow DOM, Web Components, Canvas, SVG
это тоже должен знать/уметь frond-end-разработчик.
Когда приглашают на джуниора, то и понимается, что у человека минимум знаний по технологии.
Тут о тестовом задании с применением этой технологии не может быть и речи.
Так если к вам на сайт пользователи могут логиниться через аккаунты соц. сетей.
Вы ведь создаете локального пользователя. А в него запишите откуда он пришел.
А далее уже работаете как с обычными пользователями на сайте которые могут оставлять комментарии.
В Javascript функция является обьектом и этот обьект может сохранять связь на окружение, где был обьявлен.
Вызывая inBetween(3, 6) вы получаете в результате обьект/функцию function(x), которая запомнила окружение содержащее переменные (a, b). И полученную функцию вы передаете параметром func в filter(arr, func)
Выполняя if (func(val)) вы уже обращаетесь не к inBetween, а к той функции/обьекту внутри, которая помнит о своем окружнении.
1. Не будет
2. Нет. ID удалиться.
3. Есть, но не в этом случае.
У вас ошибка в коде. У вас 2 локальных переменных "с", одна локальна для recursion(c), другая function(c)
И в случае function(c) - она будет всегда udefined.
Если вы хотите использовать "с" из recursion(c), то уберите из параметров второй (вложенной) функции.