我找到了在AngularJS here中应用过滤器的优秀代码。它按预期工作,虽然我不太确定缩短使用的是什么! ?并且:在这种情况下将取代。
从经验来看,它看起来像?并且:是三元运算符,虽然我不完全确定是什么函数!具有
从查看stackoverflow,它似乎是!具有多种功能,具体取决于上下文,即3755606。
app.filter('myFilterName', function () {
return function (value) {
return (!value) ? '' : value.replace(/ /g, '');
};
});
答案 0 :(得分:2)
!
是logical NOT operator:它将其参数强制转换为布尔值,然后反转该值(例如,true变为false,false变为true)。 if (!value)
检查value
是否有假名值。什么是“虚假”的价值?强制转换为布尔值时变为false的任何值。这是null
,undefined
,""
,NaN
,0
,当然还有false
。
test ? one_thing : another_thing
是conditional operator。如果正在测试的值是真实的,则评估?
之后的表达式并且条件表达式获取该结果;如果不是,则评估:
之后的表达式,并且条件表达式采用 结果。 (你有时会听到称为“三元”运算符的条件运算符。它确实是一个三元运算符[一个接受三个操作数的运算符],它是目前唯一的三元运算符JavaScript,但它的正确名称是'条件运算符'。理论上,有一天其他三元运算符可以添加到语言中......)
所以最终的结果是:
return (!value) ? '' : value.replace(/ /g, '');
是:
将value
强制为布尔值:Falsey值变为false
,所有其他值变为true
。
反转该布尔值。
如果反向布尔值为true
,则返回''
;否则,请评估value.replace(/ /g, '')
并返回结果。
我的猜测是value
始终是一个字符串。如果是,则简短版本为:如果value
为""
,则返回""
;否则,返回value
的内容并移除所有空格。
附注:()
周围!value
完全没必要。