Всем доброго времени суток. Дана функция:
function compare(a, b, c) {
return a == b && b == c && a != c;
}
Нужно вернуть массив с набором таких параметров что бы при вызове эта функция вернула true.
compare(values[0], values[1], values[2]) === true;//OK
Пытался найти решение с помощью null, пока что без успехов
Одним из решений может быть следующий массив
["0",0,""]
Как это работает?
При сравнении с помощью оператора == происходит приведение типов, если типы операндов отличаются. Подробнее в соответствующем ответе
Рассмотрим отдельные сравнения:
"0" == 0 - по спецификации, в этом случае строка "0" будет приведена к числу, и сравнение 0==0 даст true
0=="" - по той же спецификации, пустая строка, при приведении к числу соответствует 0, следовательно опять получается 0==0
"0" != "" - типы операндов одинаковые, приведение не используется, строки действительно не равны. поэтому результат true.
function compare(a, b, c) {
return a == b && b == c && a != c;
}
var arr = ["0", 0, ""];
console.log(compare(arr[0], arr[1], arr[2]));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости