Проверка, является ли переменная пустой в JavaScript?

Существует два вида кода JavaScript для исследования пустой / полной переменной:

if(variable == ''){}

if(!variable){}

Я проверил их обоих, и я достиг одинакового результата. Теперь я хочу знать, (во-первых) они эквивалентны? И (во-вторых), какой из них является более стандартным для проверки пустой / полной переменной?

var variable1 = 'string';
var variable2 = 12;
var variable3 = true;


if(variable1 == ''){alert('empty-one');}
if(variable2 == ''){alert('empty-one');}
if(variable3 == ''){alert('empty-one');}

if(!variable1){alert('empty-two');}
if(!variable2){alert('empty-two');}
if(!variable3){alert('empty-two');}

Как видите, нет alert,

3 ответа

Решение

Первый не является стандартным, он работает только для определенной пустой строки.

Другое будет работать, если значение не соответствует действительности (означает что-то значимое)

например, вар а;

a == '' will give false result
! a     will produce true

например, var a = null;

a == '', // false
! a      // true

var a = false;

a == '' // fase
! a     // true

var a = NaN

a == ''  // false
! NaN     // true

true == 'true' // false, Boolean true is first converted to number and then compared

0 == '' // true, string is first converted to integer and then compared

== использования The Abstract Equality Comparison Algorithm сравнить два операнда

Для получения дополнительной информации посетите http://www.ecma-international.org/ecma-262/5.1/

В JavaScript null,'',0,NaN,undefined рассмотреть фальси в javascript.

В каком-то смысле вы можете проверить пустой в обе стороны

Но ваш первый код проверяет это ''

и ваше второе условие проверяет, является ли ваша ценность одним из них (null,'',0,NaN,undefined)

На мой взгляд, ваше второе состояние лучше, чем первое, так как мне не нужно проверять null,'',0,NaN,undefined отдельно

Нет, они не эквивалентны. В случае, если сначала он проверяет, является ли значение variable равно пустой строке ('') или нет. Так что первый случай будет верным, если variableзначение '', Но второй случай будет верным для всех значений, которые являются ложными, т.е. false, 0, '', null, undefined,

Другие вопросы по тегам