Задача - простое сравнение чисел, однако метод интересный, собственно условие.
"Функция compare() принимает целочисленное x и возвращает анонимную функцию. Анонимная функция должна принимать целочисленное значение y и возвращать результат сравнения значений y и x в виде
если y > x возврат true
если y < x возврат false
если y = x возврат 0
"
Решение составил полуинтуитивно, оно работает верно(мой вопрос после решения ниже):
function compare(x){
return function (y) {
if(y>x) return true
else if (y<x) return false
else if (y == x) return 0
else return alert(‘Something wrong’);
}
}
Я не понимаю как работает этот механизм сравнения, дальше пишем в консоль
- var asd = compare(100); // присваиваем внешней функции значение аргумента x 100
- asd(101);// возврат true
- asd(99);// возврат false
- asd(100);// возврат 0
Каким образом работает сравнение?
Как я вижу этот механизм
при вводе var asd = compare(100) присваиваем значение 100 аргументу x и значение функции compare с этим параметром присваивается переменной asd, но последующие вызовы переменной с параметрами должны затирать предыдущие значения, а не сравнивать новое с первым.
Как работает этот код?
Спасибо.