这有什么区别:
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")
这是对的吗?
下面是一个它们不相同的示例:
var foo = false;
if(!foo) {
alert('!foo');
}
if(typeof foo === "undefined") {
alert('undefined');
}
仅满足第一个条件。