Ещё вопросы по 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) где в скобках - проверка истинности переменной или выражения. |
Цитата:
var one = undefined || 1; var two = 1 || undefined; alert(one + ' ' + two); |
Типовое решение:
a = 1; b = undefined; alert( !!a ); alert( !!b ); Но можно и поизвращаться) a = 1; b = undefined; alert( new Boolean(a) ); alert( new Boolean(b) ); |
Dim@,
Не понимаю, что это даст, т.к. я не получу в итоге true/false Aetae, !! - классно придумано, как я не допер С Boolean тоже интересно, спасибо. Я знал, я знал, что эту проблему можно решить. А как быть с if (typeof undefVariable == "undefined") Уж слишком громоздкая и уродливая конструкция. А ведь если переменная не определена - скрипт просто завершится с ошибкой, поэтому приходится её тыкать всюду для проверки переменных/функций на существование. Как упростить эту конструкцию? |
Разве что так
!!window.undefVariable. Но у нормального кодера все переменные определены или хотя-бы объявлены, и неоткуда вылезти несуществующим вовсе.)) P.S. В javascript явно приводить к true или false почти никогда не нужно, ибо во всех условных конструкциях значения автоматически приводятся к нужному типу. |
Цитата:
Но варианта со свойствами window мне вполне достаточно пока, работает, спасибо. Цитата:
|
В функциях - естесно.)
|
Часовой пояс GMT +3, время: 00:17. |