Javascript 语法:AngularJS 过滤器

Posted

技术标签:

【中文标题】Javascript 语法:AngularJS 过滤器【英文标题】:Javascript Syntax: AngularJS Filter 【发布时间】:2015-04-08 09:59:35 【问题描述】:

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

根据经验,它看起来像 ?和 : 是三元运算符,虽然我不完全确定 !有。

环顾***,看起来像!根据上下文具有多种功能,即3755606。

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

【问题讨论】:

! 运算符只做一件事,真的。 【参考方案1】:

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

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

所以最终结果是:

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

是:

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

反转该布尔值。

如果反转的布尔值是true,则返回'';否则,评估value.replace(/ /g, '') 并返回结果。

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


旁注:!value 周围的 () 完全没有必要。

【讨论】:

以上是关于Javascript 语法:AngularJS 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 简介指令表达式

JavaScript 框架------------AngularJS(上)

JavaScript强化教程——AngularJS

JavaScript强化教程——AngularJS

AngularJS

一款优秀的JavaScript框架—AngularJS