У него было время программируя в языке сценариев JavaScript и никогда я не заметил это своеобразие, которое у него есть со стоимостью NaN
.
Я принял решение быть исследовано и больше, что я нашел, он был: NaN - язык сценариев JavaScript | MDN / [английский язык].
Я понял, что NaN
это ссылка «Not на Number» (это не число) но я не остаюсь ясным, из-за которого NaN не равен другому NaN используя оператор ==
, ===
.
parseFloat('NaN') == parseFloat('NaN'); // false
parseFloat('NaN') == NaN; // false
NaN == NaN; // false
Что происходит на логическом уровне, который равенство не выполняет?: из-за которого он не применяется также для выражения undefined == undefined
?
Такой он такой, как он был определен и имеет смысл, например представляет следующий случай:
var a = 1/"lunes"; //NaN
var b = Math.sqrt(-1) //NaN
Так a
как b
они дают как результат NaN
. Сейчас: он тебе кажется правильным, что были равны?
Именно поэтому используется функция isNaN()
чтобы проверять, ли мы перед одним NaN
или это не вместо того, чтобы пробовать сравнивать против другого NaN
Это не применяется в undefined
потому что у этого есть точное значение: Не определенный идентификатор. Взамен NaN
это удача недействительной стоимости, для которого в других языках она была бы ошибкой во время выполнения или исключение
Проверяя документацию NaN
Ты увидишь, что он комментирует
NaN никогда не является эквивалентным с любым другим числом, включая тот же NaN; ты не можешь проверять стоимость not-a-number сравнивая это с Number. NaN. Использовать функцию isNaN () для того.
Или же ты должен использовать isNaN()
чтобы добиваться того, что ты выдвигаешь.
Я хочу подумать, что это такое, потому что говорится об объекте, который сравнивается ссылкой, использовав ==
poreso две ссылки не будут равны.
Оно не последует за тем же самым с undefined, потому что это примитивная стоимость, это не объект как NaN, поэтому ты можешь сравнивать это с равным.
В простых словах NaN Not a Number
(NaN нет один nГєmero), и поскольку его нет один nГєmero, это любая вещь. Не возможно сравнивать любую вещь стороны с любой вещью в другой стороне, а следовательно ничто не гарантирует, что оба равны. Например не возможно делать эту comparaciГіn:
(0.0 / 0.0) == (0.0 / 0.0) // false
Это comparaciГіn то же самое что:
NaN == NaN; // false
В языке сценариев JavaScript undefined
- тип информации , равно как это это Number
, String
, Boolean
, Object
или Array
. В языке сценариев JavaScript, в отличие от других языков programaciГіn с крепостью tipado, у нас могут быть переменные типа undefined
.
Вкратце, в языке сценариев JavaScript, все те переменные, которые не были определены (следовательно, они не существуют), или что были определены, не распределяя стоимости им, всегда типа undefined
.
, Из-за которого lГіgicamente, сравнив две вещи, которые считает самими тип информации , в этом случае undefined
, он возвращает Verdadero
.
Снабжает ссылками: Java Лангвахе Спесификатион (JLS)
1/"lunes"
был равенMath.sqrt(-1)
. Потому что первый - неопределенные немного , пока второй - nú простой комплекс . Но он мне не кажется немного очевидным, когда я спрашиваю из-заMath.sqrt(-1) == Math.sqrt(-1)
, так как deberí чтобы обрабатывать информацию того же nú простой комплекс. Также из-за1/undefined == 1/undefined
. – Francute 15.12.2017, 12:381 == 1
deberí в , его бытьNaN == NaN
. В настоящее время чтобы понимать decisió n, что направили, я интерпретирую, что 1 está определенный, это nú морской окунь 1 partí cularmente. definició n NaN взамен - набор из стоимости: любая вещь, кроме nú морской окунь. И хороший, поскольку это примитивная стоимость, он не содержит свойство, чтобы знать qué operació n он порождается, подтвердив 2 NaN, тогда прямо они считаются различными. – Francute 15.12.2017, 22:53