我已经看过下面的代码,我不太确定会发生什么。函数中没有设置返回类型,因此我无法弄清楚ORing 3字符串的作用。这个方法将返回什么以及OR做什么?
return $scope.filterLabels[key] ||
$scope.filterLabels[oldSchoolFacetCode()] ||
key;
答案 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,它将评估下一个表达式,意思是..
虚假的价值观:
false
0
(零)""
或''
(空字符串)null
undefined
NaN
(非数字)答案 2 :(得分:1)
如果任何项目为真,则为|| operator将返回第一个计算结果为true的项(== not ===)
return "" || "foo" || "bar"
返回“foo”
答案 3 :(得分:0)
上述语句将返回一个有效值,表示不是null
/已定义等...并且它将从左到右进行验证。
考虑这种情况,
return a || b || c;
现在,如果a
和b
为undefined
,则在此上下文中,它将返回c
的值。