angular.isUndefined(value)和不是!(value)之间有什么区别?

时间:2014-09-02 14:55:12

标签: angularjs

我试过了:

if(angular.isUndefined(value)){
    // something
}

if(!(value)){
    // something
}
  • 这两者有区别吗?
  • 是否有一个用例来选择一个而不是另一个?

2 个答案:

答案 0 :(得分:2)

var foo = false; 


if(!foo) {
  // will log
  console.log("foo is defined but false");
}

if(angular.isUndefined(foo)){
   // will not log as foo is defined
   console.log("foo is undefined")
}

没有定义foo的另一个例子

if(!foo) {
  // will throw exception "Uncaught ReferenceError: foo is not defined "
  console.log("foo is defined but false");
}

if(angular.isUndefined(foo)){
   // will log
   console.log("foo is undefined")
}

如此有效的angular.isUndefined(foo)除了评估

之外别无其他
if(typeof foo == "undefined")

用于保存1个字符是的。

while!-operator检查定义的变量是否计算为false 所以

if(!foo) 

相同
if( foo != true)

更新:

正如评论中所述,当我写“评估为假”时,false null undefined NaN ""(空字符串)和{{ 1}}包括

答案 1 :(得分:0)

!是JavaScript中的逻辑非运算符,而angular.isUndefined(value)检查引用是否未定义

完全使用哪一个取决于你最终想要做什么。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operatorshttps://docs.angularjs.org/api/ng/function/angular.isUndefined