2016-05-11 1 views
3

Я путать с ниже кодом:В случае заявления, неопределенный равно с ложным

if(undefined){ 
    //code will not be executed 
} 

и

if(!undefined){ 
    //code will be executed 
} 

Это тот подразумевают «неопределенными» равно с ложным?

Здесь the question относящийся, но ни одного пункт выше положение дел вне.

+2

truthy значение 'undefined' в Javascript является' false'. Следовательно, поведение, которое вы видите. – stackErr

+1

'Boolean (undefined)' is 'false'. Но ваши комментарии должны быть взаимозаменяемы. –

+0

@FastSnail Это означает, что оператор if переключит каждый переданный ему параметр внутри? Я имею в виду, например: if (Boolean (parameter)) {// код} ', верно? –

ответ

12

Это означает, что undefined является falsy значение, список falsy значений являются:

""  # Empty string 
null  # null 
undefined # undefined, which you get when doing: var a; 
false  # Boolean false 
0   # Number 0 
NaN  # Not A Number eg: "a" * 2 

Если вы отрицать falsy значение, которое вы получите истинное:

!""  === true 
!null  === true 
!undefined === true 
!0   === true 
!NaN  === true 

И когда вы nagate действительно значение вы получите ложь:

!"hello" === false 
!1  === false 

Но undefined не равна false:

undefined === false // false 
undefined == false // false 

И просто для удовольствия, если он:

undefined == null // true 
+0

Я напишу его в своем меморандуме, спасибо –

4

В JavaScript строгом режиме, undefined не является ложным, но Javascript попытаться преобразовать объект или вар к значению boolean (это вызванный в javascript правным значением), вот почему вы получили undefined как ложный. Например, это происходит и с null.

Вы можете принудить с этим строго не равенства:

if(undefined!==false) console.log("Is not false"); 

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

  • Нет связанных вопросов^_^