【问题标题】:Javascript Syntax: AngularJS FilterJavascript 语法:AngularJS 过滤器
【发布时间】:2015-04-08 09:59:35
【问题描述】:
我找到了在 AngularJS here 中应用过滤器的出色代码。它按预期工作,虽然我有点不确定缩短使用的是什么! ?和 : 在这种情况下将取代。
根据经验,它看起来像 ?和 : 是三元运算符,虽然我不完全确定 !有。
环顾stackoverflow,看起来像!根据上下文具有多种功能,即3755606。
app.filter('myFilterName', function () {
return function (value) {
return (!value) ? '' : value.replace(/ /g, '');
};
});
【问题讨论】:
标签:
javascript
angularjs
syntax
filter
ternary-operator
【解决方案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 始终是一个字符串。如果是,那么简短版本是:如果value 是"",则返回"";否则,返回 value 的内容并删除所有空格。
旁注:!value 周围的 () 完全没有必要。