Javascript语法:AngularJS Filter

时间:2015-02-08 16:51:48

标签: javascript angularjs syntax filter ternary-operator

我找到了在AngularJS here中应用过滤器的优秀代码。它按预期工作,虽然我不太确定缩短使用的是什么! ?并且:在这种情况下将取代。

从经验来看,它看起来像?并且:是三元运算符,虽然我不完全确定是什么函数!具有

从查看stackoverflow,它似乎是!具有多种功能,具体取决于上下文,即3755606

 app.filter('myFilterName', function () {
    return function (value) {
        return (!value) ? '' : value.replace(/ /g, '');
    };
  });

1 个答案:

答案 0 :(得分:2)

!logical NOT operator:它将其参数强制转换为布尔值,然后反转该值(例如,true变为false,false变为true)。 if (!value)检查value是否有假名值。什么是“虚假”的价值?强制转换为布尔值时变为false的任何值。这是nullundefined""NaN0,当然还有false

test ? one_thing : another_thingconditional operator。如果正在测试的值是真实的,则评估?之后的表达式并且条件表达式获取该结果;如果不是,则评估:之后的表达式,并且条件表达式采用 结果。 (你有时会听到称为“三元”运算符的条件运算符。它确实是一个三元运算符[一个接受三个操作数的运算符],它是目前唯一的三元运算符JavaScript,但它的正确名称是'条件运算符'。理论上,有一天其他三元运算符可以添加到语言中......)

所以最终的结果是:

return (!value) ? '' : value.replace(/ /g, '');

是:

  • value强制为布尔值:Falsey值变为false,所有其他值变为true

  • 反转该布尔值。

  • 如果反向布尔值为true,则返回'';否则,请评估value.replace(/ /g, '')并返回结果。

我的猜测是value始终是一个字符串。如果是,则简短版本为:如果value"",则返回"";否则,返回value的内容并移除所有空格。


附注:()周围!value完全没必要。