!foo和typeof foo之间的区别===“undefined”

时间:2014-12-30 17:28:48

标签: javascript angularjs

这有什么区别:

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")

这是对的吗?

1 个答案:

答案 0 :(得分:1)

这是一个不相同的例子:

var foo = false;

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

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

只有满足第一个条件。