тестирование на неопределенное в JavaScript - PullRequest
2 голосов
/ 22 июля 2010

Я хочу запустить код, только если argument[0].recordCount больше нуля или НЕ является неопределенным. Однако код запускается, когда предупреждение argument[0].recordCound показывает неопределенное.

if(arguments[0].recordCount > 0 && 
   arguments[0].recordCount !== 'undefined')
{ //if more than 0 records show in bar

    document.getElementById('totalRecords').innerHTML = 
       arguments[0].recordCount + " Records";
}

Как я могу проверить неопределенность здесь?

Ответы [ 3 ]

6 голосов
/ 22 июля 2010

При использовании undefined в качестве строки необходимо сделать это с оператором typeof.

Кроме того, вам следует проверить, определено ли оно до любых других проверок свойства.

if ( 'undefined' != typeof arguments[0].recordCount && arguments[0].recordCount > 0 )
2 голосов
/ 22 июля 2010

undefined - это ключевое слово глобальная переменная с постоянным значением, используйте ее без кавычек:

if(arguments[0].recordCount > 0 && arguments[0].recordCount !== undefined)

Но на самом деле достаточно проверить только первое условие:

if(arguments[0].recordCount > 0)

, поскольку, если recordCount больше нуля, он все равно определяется.


Более распространенным является переключение условий и проверка first определяется, чтобы избежать возможных ошибок в следующих тестах (не уверен, если это необходимо здесь):

if(arguments[0].recordCount !== undefined && arguments[0].recordCount > 0)
1 голос
/ 22 июля 2010

Чтобы проверить, чтобы переменная не была нулевой и не неопределенной,

if(thatVariable) достаточно, хотя неявное преобразование может вызвать проблемы в некоторых случаях, когда thatVariable является пустой строкой, или логическим значением, или числом 0. Если неявное преобразование не относится к нашей переменной, будет сделано следующее:

if(arguments[0].recordCount && arguments[0].recordCount > 0)

Но следующее было бы проблематично,

if(arguments[0].recordCount !== undefined && arguments[0].recordCount > 0)

Рассмотрим,

var undefined = 'surprise' //possible since undefined is not a keyword
if(arguments[0].recordCount !== undefined && arguments[0].recordCount > 0)

Теперь это «если» будет нарушено, хотя recordCount не определено.

Еще одна вещь: if(a != null) также проверит неопределенность из-за неявного преобразования. Следовательно if(a != null && a != undefined) является избыточным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...