![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: San Pietroburgo
Сообщений: 1,408
|
Цитата:
![]()
__________________
I denti non possono dire niente... senza la lingua... Perche' la tua lingua e' mia! |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Цитирую Нокса
trace(Number("A") == Number("A")); // false trace(Number(undefined) == Number.NaN; // false объяснение простое: NaN - (по фомату IEEE double) это значение числового типа float double такое что его экспонента равна 2047 а мантисса отлична от нуля. т.е. таких чисел - много. какое именно число получится в качестве NaN в каждом конкретном случае - неизвестно. из этого вытекает то, что нельзя сравнивать результат операции (значение переменной) с константой Number.NaN чтобы определить является ли этот результат числом или нет. надо пользовать глобальную функцию isNaN, без вариантов. a = "test"; trace(Number(a) == Number.NaN); // false trace(isNaN(Number(a))); // true |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
iNils, сорри за навязчивость, но все равно не могу понять как проверить, что Number(null) это в действительности NaN.
А ведь если бы undefined и null приводились к числовому типу как NaN, это давало ответ на мой первый вопрос: почему 0 == undefined дает false. |
|
|||||
|
trace(isNaN(Number(undefined))); // true
trace(isNaN(Number(null))); // true
__________________
The matrix has you... |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Nео, речь идет об AS 1.0 для Flash MX.
|
|
|||||
|
сорри... пропустил!
![]()
__________________
The matrix has you... |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
// зря удалил только что написанное сообщение.
В AS 1.0 for Flash MX эти операции приводят к false. Вот. |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Операторы "==" и "!=" перед сравнением преобразуют операнды к одному типу, отдавая предпочтение числовому.
Если undefined преобразуется к NaN, что мы пока не смогли подтвердить - сравниваются 0 и NaN. Но если undefined преобразуется к 0 (что мы пока только и видели), то сравниваются 0 и 0. Почему результат такого сравнения false - вопрос, мучающий меня почти сутки. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|