2013-07-30 2 views
-3

ли утверждение:Javascript неопределенный не пустой, не пустой вопрос

if(attachmentId!=null && attachmentId.length>0&& attachmentId !='undefined'){ 
    //do something 
    } 

эквивалентно:

if (attchmentId) { 
    //do something 
    } 

спасибо за помощь

+1

'= вложений 'undefined'' не то же самый, как' = undefined' вложение – karthikr

+1

После того, как мы знаем, что это реально! вопрос, мы можем выбрать другой вопрос, чтобы закрыть это как дубликат. –

ответ

4

Запись:

if (attchmentId) 

является эквивалентом:

if(
    attchmentId != undefined &&//NO QUOTE 
    attchmentId != '' && 
    attchmentId != null && 
    attchmentId != false && 
    attchmentId != 0 
) 
+0

+1 для перехода к точке. – Renan

+0

3 upvotes, в то время как мой ответ был неправильным :), но я его отредактировал –

+0

Подождите, было ли это неправильно? я потерялся. –

0

Они не эквивалентны, но третий тест attachmentId !='undefined' вероятно, была ошибкой (вы хотели attachmentId !=undefined?).

Другим примером отличия является то, что 0 не проходит первый тест, а пропускает второй.

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

0

Это может быть сведено к следующим образом:

if (attachmentId && attachmentId.length > 0) { 
    //do something 
} 

Это будет делать для массивов и более сложных объектов, которые случаются иметь length собственности. Если вложения должно быть строкой кода выше, будет работать так же, но вторая часть будет в основном быть Noop, так что вы можете просто пойти с:

if (attachmentId) { 
    //do something 
} 

Я предполагающее сравнение с 'undefined' был ошибка - сделайте это, и вы не проверяете, действительно ли что-то действительно undefined. Вы проверяете, что он отличается от строковой строки, которая говорит «undefined».

Также вы проверяете переменную сначала из-за short circuit rule. Это либо null, либо не определено, что вам все равно. В противном случае, если вы попытались оценить длину, прежде чем проверять, есть ли она undefined или null, вы можете отправить туда ошибку.

Смежные вопросы