Подтвердить что ты не робот

Проверка javascript для не null

Ниже приведен фрагмент кода, где мы извлекаем значение формы. Перед дальнейшей обработкой проверьте, не имеет ли значение значение null.

var val = document.FileList.hiddenInfo.value;
alert("val is " + val);  // this prints null which is as expected
if (val != null)
{
   alert("value is "+val.length); // this returns 4
}
else
{
   alert("value* is null");
}

Любые идеи, почему это происходит так.??

4b9b3361

Ответ 1

Это потому, что val не null, но содержит 'null' как строку.

Попробуйте установить флажок "null"

if ('null' != val)

Ответ 2

это сделает трюк для вас

if (!!val) {
    alert("this is not null")
} else {
    alert("this is null")
}

Ответ 3

Используйте !==, поскольку != превратит вас в мир непереходной безызвестной таблицы истины JavaScript.

Ответ 4

Есть три способа проверить "не null". Моя рекомендация - использовать Strict Not Version.

1. Строгая не версия

if (val !== null) { ... }

В Strict Not Version используется "Алгоритм сравнения строгого равенства" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6. !== имеет более высокую производительность, чем оператор !=, потому что алгоритм сравнения строгих равенств не имеет значений типа.

2. Нестрогая не версия

if (val != 'null') { ... }

Нестрогая версия использует "Алгоритм сравнения абстрактного равенства" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3. != имеет более низкую производительность, чем оператор !==, потому что алгоритм сравнения абстрактного равенства сравнивает значения.

3. Double Not Version

if (!!val) { ... }

Двойная не версия !! имеет более высокую производительность, чем как строгая не версия !==, так и нестрогая версия != (https://jsperf.com/tfm-not-null/6). Тем не менее, он будет определять значения "Falsey", такие как undefined и NaN, в False (http://www.ecma-international.org/ecma-262/5.1/#sec-9.2), что может привести к неожиданным результатам, и он имеет более высокую читаемость, поскольку null явно не указано.

Ответ 5

Вы должны использовать строгий оператор сравнения not equals !==, чтобы, если пользователь вводит "null", вы не попадете в else.

Ответ 6

Возможно, потому что значение val на самом деле является строкой "null", а не значением null.

Ответ 7

Если вы хотите включить 0 в качестве допустимого значения:

if (!!val || val === 0) { ... }

Ответ 8

Это должно работать нормально.

   if(val!= null)
    {
       alert("value is "+val.length); //-- this returns 4
    }
    else
    {
       alert("value* is null");
    }

Ответ 9

Это будет работать:

if (val) {
    alert("Not null");
} else {
    alert("Null");
}