Вопрос проверяет понимание математической природы NaN и того, как это отражено в JavaScript.
Потому что NaN по стандарту IEEE 754 не равно никакому значению, включая самого себя. Это поведение специально заложено в спецификацию. Все остальные значения в JavaScript равны самим себе. Поэтому сравнение значения с самим собой позволяет надёжно выявить NaN.
Поведение NaN кажется странным, но оно логично с точки зрения стандарта чисел с плавающей точкой.
Определение: IEEE 754 — стандарт представления чисел с плавающей точкой, используемый в JavaScript.
NaN означает “результат не определён”. Он не представляет конкретное число, поэтому:
NaN == NaN → false
NaN === NaN → false
Любое значение x в JavaScript:
x === x → true
кроме NaN
Отсюда и возникает проверка:
value !== value
позволяет реализовать проверку без встроенных функций
используется в low-level коде
полезно для понимания языка, а не как основной приём
Вывод: сравнение аргумента с самим собой работает для определения NaN, потому что NaN — единственное значение, не равное самому себе.