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');
}
只有第一个条件会得到满足。这里有一篇文章,有助于理解===