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
是否具有虚假值。什么是“虚假”价值?强制为布尔值时变为假的任何值。那是null
、undefined
、""
、NaN
、0
,当然还有false
。
test ? one_thing : another_thing
是conditional operator。如果正在测试的值是真值,则计算?
之后的表达式并且条件表达式采用该结果;如果不是,则计算:
之后的表达式,条件表达式采用 that 结果。 (你有时会听到称为“三元”运算符的条件运算符。确实,它是a三元运算符[一个接受三个操作数的运算符],它是目前唯一的三元运算符javascript,但它的专有名称是“条件运算符”。理论上,有一天其他三元运算符可以添加到该语言中......)
所以最终结果是:
return (!value) ? '' : value.replace(/ /g, '');
是:
将value
强制转换为布尔值:Falsey 值变为false
,所有其他值变为true
。
反转该布尔值。
如果反转的布尔值是true
,则返回''
;否则,评估value.replace(/ /g, '')
并返回结果。
我的猜测是value
始终是一个字符串。如果是,那么简短版本是:如果value
是""
,则返回""
;否则,返回 value
的内容并删除所有空格。
旁注:!value
周围的 ()
完全没有必要。
【讨论】:
以上是关于Javascript 语法:AngularJS 过滤器的主要内容,如果未能解决你的问题,请参考以下文章