2015-11-28 6 views
-2

Существует два вида кода 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.

+0

Ваше определение: пустое? Является ли 'variable' всегда строкой? Может быть, это число, объект, массив, логическое, неопределенное, null ...? – JJJ

+0

Возможный дубликат [Как проверить пустую строку в JavaScript?] (Http://stackoverflow.com/questions/154059/how-do-you-check-for-an-empty-string-in-javascript) – Kenney

+0

лучший ответ на ваш вопрос относительно «более стандартного» (если это даже существует), это зависит от того, что это. Это зависит от того, какую переменную вы ожидаете иметь. Кроме того, предоставление «пустых» переменных с надлежащим видом поможет вам больше всего.Например, если вы ожидаете, что переменная 'someString' будет строкой, тогда, когда вы не хотите ее передавать, вы все равно должны пройти пустую строку, то есть' '" ' – eAbi

ответ

3

Во-первых, это не стандарт, он работает только для определенной пустой строки.

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

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

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

e.g. var a = null;

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

var a = false;

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

вар а = 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/#sec-11.9.3

+1

вы пропустили очень важный (я думаю, это) соображение, 'var a = 0' ...' a == '' 'is true –

+0

отличный .. хороший момент .. вы объясните это, во время сравнения, если только один операнд является логическим, то он преобразуется в interger, но в чем тут логика –

+1

Я забыл еще один ... 'var a = []' ... 'a == ''' также верно –

3

В javascript null,'',0,NaN,undefined Рассмотрите falsey в javascript.

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

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

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

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

+0

' считать false' - термин 'falsey' (и 'правдивость') часто используются для этих значений –

+0

yah, я могу вспомнить, что вы указывали это в другом сообщении. Спасибо за указание. Я обновил свой ответ @JaromandaX –

+0

что я могу сказать, мне нравится ложь: p –

1

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

+0

Спасибо ....! +1 – Shafizadeh

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