Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Chome 18.0.1025.142 Prompt() возвращает NULL как строку (https://javascript.ru/forum/css-html-browser/27220-chome-18-0-1025-142-prompt-vozvrashhaet-null-kak-stroku.html)

alexben 05.04.2012 21:53

Chome 18.0.1025.142 Prompt() возвращает NULL как строку
 
Здравствуйте, подскажите что делать хром возвращяет NULL как строку:

вот банальный пример:

var name;
 do {
    name = prompt ("номер телефона","");
     } while (!name)


NULL хром возвращает как строку т.е. "null", можно усложнить условие цикла, но вопрос в другом как этого избежать.

melky 06.04.2012 13:15

!name предполагает, что будет введена строка с ненулевой длиной.

" " (3 пробела) тоже считается как за строку.

alexben 07.04.2012 09:59

!name предполагает, что будет введена строка с ненулевой длиной.
спасибо, Америку открыли. И достаточно пробела, чтобы строка явл. не пустой и выполнялся выход из цикла.
Вопрос стоял иначе, почему ХРоМ возвращает тривиальный тип данный null как строку? И как этого избежать/ или исправить?

Pavel M. 07.04.2012 10:27

у меня Хром 18.0.1025.151 null возвращает при отмене а не строку

alexben 07.04.2012 12:36

Павел, проверьте пожалуйста через typeof;
у меня возвращает string...
Хром 18.0.1025.151
Буду благодарен вам

вот: http://jsfiddle.net/Hnwf7/

походу только фаерФокс меня понимает и возвращает object :(
up: и опера.
хром и ишак гребаные танкисты

Kolyaj 07.04.2012 12:53

Да, есть фэйл.

Gvozd 07.04.2012 13:45

Нельзя использовать переменную name
Она уже есть в глобальной области видимости до Вас.
И Chrome принудительно приводит ее к строке, чтобы вы туда не пытались положить.

Pavel M. 07.04.2012 13:57

Цитата:

Сообщение от alexben
Павел, проверьте пожалуйста через typeof

Да Gvozd прав если ваш пример http://jsfiddle.net/Hnwf7/ то String
если просто typeof prompt(...) - object

alexben 07.04.2012 14:10

мля.. пасиба. А я уже пару раз так натыкался. Надо запомнить будет все занятые переменные :)

Gvozd 07.04.2012 14:28

Цитата:

Сообщение от alexben
Надо запомнить будет все занятые переменные

Это не совсем правильный подход.
Гораздо лучшим является подход - не создавать без необходимости глобальные переменные.
В локальной области видимости вы сам себе хозяин, и вполне можете создавать переменную name


Часовой пояс GMT +3, время: 03:55.