Откуда функция берёт переменные?

var users = [{
  name: "Вася",
  surname: 'Иванов',
  age: 20
}, {
  name: "Петя",
  surname: 'Чапаев',
  age: 25
}, {
  name: "Маша",
  surname: 'Медведева',
  age: 18
}];


function byField(field){
	return function (a,b){
		return a[field] > b[field] ? 1 : -1;
	}
}

users.sort(byField('name'));
users.forEach(function(user) {
  alert( user.name );
});

Этот код работает, но откуда вложенная функция в функцию byField берёт переменные a и b, если [[Scope]] для byField = window, а для вложенной функции - byField(). Место, откуда функция вызывается, влияет на [[Scope]]? Ведь каким-то образом a и b с sort() передались для byField()
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
но откуда вложенная функция в функцию byField берёт переменные


вы вызываете функцию sort и в качестве аргумента даете ей эту "вложенную" функцию. Функции в JS это такие же объекты как числа, строки и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы