Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两者之间的区别!foo和类型foo===”;“未定义”;_Javascript_Angularjs - Fatal编程技术网

Javascript 两者之间的区别!foo和类型foo===”;“未定义”;

Javascript 两者之间的区别!foo和类型foo===”;“未定义”;,javascript,angularjs,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 ...

这两者的区别是什么:

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)
!=<代码>(类型为foo==“未定义”)


这是正确的吗?

下面是一个它们不相同的示例:

var foo = false;

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

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

只有第一个条件会得到满足。

这里有一篇文章,有助于理解===