Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2012, 17:52
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Ещё вопросы по JavaScript: undefined, проверка true/false, ...
1) Как проверить, что объект/переменная/свойство не существует (то есть undefined) покороче и попроще, чем
if (typeof undefVariable == "undefined") ... ?

2) Значение переменной или выражение может возвратить как true/false, так и строку или число, которые неоднозначно интерпретируются как истина или ложь.
Как попроще и универсально получить из этой мешанины чистые булевские true/false? -
без if(...) ..=true; else ..=false;
и без оператора ...?true:false
Например, нужно эту проверку попроще записать в присвоении
var condition = (true или false)
где в скобках - проверка истинности переменной или выражения.
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2012, 18:31
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Сообщение от Почемучкин
Например, нужно эту проверку попроще записать в присвоении
var one = undefined || 1;
var two = 1 || undefined;
alert(one + ' ' + two);
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2012, 18:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

Типовое решение:
a = 1;
b = undefined;
alert( !!a );
alert( !!b );

Но можно и поизвращаться)
a = 1;
b = undefined;
alert( new Boolean(a) );
alert( new Boolean(b) );
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2012, 21:04
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Dim@,
Не понимаю, что это даст, т.к. я не получу в итоге true/false


Aetae,
!! - классно придумано, как я не допер
С Boolean тоже интересно, спасибо. Я знал, я знал, что эту проблему можно решить.


А как быть с
if (typeof undefVariable == "undefined")
Уж слишком громоздкая и уродливая конструкция.
А ведь если переменная не определена - скрипт просто завершится с ошибкой, поэтому приходится её тыкать всюду для проверки переменных/функций на существование.

Как упростить эту конструкцию?

Последний раз редактировалось Почемучкин, 04.09.2012 в 21:07.
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2012, 21:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

Разве что так
!!window.undefVariable
.
Но у нормального кодера все переменные определены или хотя-бы объявлены, и неоткуда вылезти несуществующим вовсе.))

P.S. В javascript явно приводить к true или false почти никогда не нужно, ибо во всех условных конструкциях значения автоматически приводятся к нужному типу.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2012, 22:19
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Цитата:
все переменные определены или хотя-бы объявлены
А если это подключаемый модуль, который не знает что до него подключалось?...
Но варианта со свойствами window мне вполне достаточно пока, работает, спасибо.

Цитата:
приводить к true или false почти никогда не нужно
Но ведь typeof возвращает непустую строку, например, которая == true всегда. Возможно еще какие-то ситуации, я не помню. В функциях лучше возвращать конкретные значения, которые не надо перепроверять, имхо.
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2012, 22:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

В функциях - естесно.)
__________________
29375, 35

Последний раз редактировалось Aetae, 08.09.2012 в 22:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить картинку на страницу поверх ее.. Вадим_СС Javascript под браузер 2 23.04.2012 08:45
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
проверка формата даты на JavaScript, помогите простейшим примером tangens Общие вопросы Javascript 18 05.12.2008 16:20
генерация чисел и проверка на повтор Javascript jesuspunk Общие вопросы Javascript 7 25.03.2008 15:32