Проверка 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");
}

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

Ответ 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");
}