Почему 0 < undefined
возвращает false
вместо не определено?Почему 0 <undefined возвращает false вместо undefined?
Основываясь на абстрактной части сравнения реляционных характеристик ES6 http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-relational-comparison Я думаю, что он должен возвращаться не определен. (пожалуйста, щелкните по спецификации, чтобы понять, что я говорю)
Я не совсем понимаю часть ReturnIfAbrupt, но, похоже, это не должно останавливать сравнение. Затем я интерпретировал 3 и 4, поскольку в основном говорю, поскольку он использует флаг <, а не флаг>, а затем продолжает двигаться. Он должен игнорировать 5, потому что 0 и undefined не являются строками.
Итак на 6. он говорит, чтобы преобразовать 0 до числа, которое 0 и преобразовать неопределенными в число которых должно быть NaN согласно http://www.ecma-international.org/ecma-262/6.0/#sec-tonumber
Поскольку 6f состояний «Если пу является NaN, возврат не определено «Тогда почему я становлюсь ложным, а не неопределенным? Это тот же результат в Chrome, Safari и Firefox, поэтому я предполагаю, что все 3 браузера не интерпретируют спецификацию неправильно.
FWIW '0 NaN === false'. Я предполагаю, что оператор '<' and '>' возвращает логический результат, который является либо 'true', либо' false', а 'undefined' является не только NOT значением (это переменная), но также не находится в наборе булевых значений –
slebetman
BTW, последняя спецификация - [* ECMAScript 2016 *] (http://www.ecma-international.org/ecma-262/7.0/index.html), который издан в 7. В середине этого года ECMAScript ed 8 aka 2017 Будет выпущен. – RobG