2014-12-30 2 views
-2

В чем разница между этим:разница между обув и TYPEOF обув === «неопределенном»

if(!foo) { 
    ... 
} 

И это:

if(typeof foo === "undefined") { 
    ... 
} 

Я видел некоторый код, который пытается лечить эти два заявления, как если бы они были идентичными, но я столкнулся с проблемами при этом. Я делал что-то подобное с AngularJS:

var property = { 
    value: $scope.foo //$scope.foo may or may not have been defined above, depending on contexts 
    ... 
}; 

func(property); 

function func (property) { 
    if(!property.value) { 
    //This doesn't get executed, even if $scope.foo was never defined 
    } 
} 

Мне кажется, что (!foo) == (typeof foo === "undefined")

Правильно ли это?

+0

Это сообщение, которое может быть полезно для понимания использования === http://stackoverflow.com/questions/523643/difference-between-and-in-javascript – osmanraifgunes

ответ

1

Вот пример, где они не идентичны:

var foo = false; 

if(!foo) { 
    alert('!foo'); 
} 

if(typeof foo === "undefined") { 
    alert('undefined'); 
} 

Только первое условие будет выполнено.

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