这有什么区别:
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 :(得分:1)
这是一个不相同的例子:
var foo = false;
if(!foo) {
alert('!foo');
}
if(typeof foo === "undefined") {
alert('undefined');
}
只有满足第一个条件。