理解Javascript返回语句

时间:2014-05-08 12:02:07

标签: javascript angularjs

我已经看过下面的代码,我不太确定会发生什么。函数中没有设置返回类型,因此我无法弄清楚ORing 3字符串的作用。这个方法将返回什么以及OR做什么?

 return $scope.filterLabels[key] ||
                $scope.filterLabels[oldSchoolFacetCode()] ||
                key;

4 个答案:

答案 0 :(得分:7)

||运算符返回左参数(如果它是真实的,否则返回正确的参数)。

例如,null || false评估为false,而false || null评估为null

考虑到这一点,return语句将返回:

  • $scope.filterLabels[key]如果是真的
  • $scope.filterLabels[oldSchoolFacetCode()]如果第一个是假的,这是真的
  • key如果以上都没有返回。

代码实际上是简写:

if( $scope.filterLabels[key]) return $scope.filterLabels[key];
if( $scope.filterLabels[oldSchoolFacetCode()]) return $scope.filterLabels[oldSchoolFacetCode()];
return key;

答案 1 :(得分:4)

如果操作数在||的左侧操作数是真的,它将返回该操作数(左侧),如果它是伪造的,它将返回右侧操作数。

更简单的情况就是这样......

return true || false; // this would return true

return false || true; // this would also return true

return false || 3; // this would return 3

return 3 || 7; // this would also return 3

在这种特殊情况下,这意味着......

return a || b || c;
  • 如果a为真,则返回true。

  • 如果a为false,它将评估下一个表达式,意思是..

    • 如果b是真实的,它将返回b
    • 如果b是假的,它将返回c(即使c是假的)

虚假的价值观:

  • false
  • 0(零)
  • ""''(空字符串)
  • null
  • undefined
  • NaN(非数字)

答案 2 :(得分:1)

如果任何项目为真,则为|| operator将返回第一个计算结果为true的项(== not ===)

return "" || "foo" || "bar"

返回“foo”

答案 3 :(得分:0)

上述语句将返回一个有效值,表示不是null /已定义等...并且它将从左到右进行验证。

考虑这种情况,

return a || b || c;

现在,如果abundefined,则在此上下文中,它将返回c的值。