Javascript 语法:AngularJS 过滤器
Javascript Syntax: AngularJS Filter
我在 AngularJS here 中找到了应用过滤器的优秀代码。它按预期工作,虽然我有点不确定缩短使用的是什么! ?和 : 在这种情况下将取代。
根据经验,它看起来像 ?和 : 是一个三元运算符,虽然我不完全确定 !有。
环顾Whosebug,似乎!根据上下文有多种功能,即 3755606.
app.filter('myFilterName', function () {
return function (value) {
return (!value) ? '' : value.replace(/ /g, '');
};
});
!
是 logical NOT operator:它将其参数强制转换为布尔值,然后反转该值(例如,true 变为 false,false 变为 true)。 if (!value)
检查 value
是否有错误值。什么是 "falsey" 值?强制为布尔值时变为假的任何值。那是 null
、undefined
、""
、NaN
、0
,当然还有 false
.
test ? one_thing : another_thing
是 conditional operator。如果正在测试的值是真值,则计算 ?
之后的表达式并且条件表达式采用该结果;如果不是,则计算 :
之后的表达式,条件表达式采用 that 结果。 (您有时会听到称为 "ternary" 运算符的条件运算符。它确实是 a 三元运算符 [接受三个操作数的运算符],并且它是目前 JavaScript 中唯一的三元运算符,但它的专有名称是 'conditional operator'。理论上,有一天可以将其他三元运算符添加到该语言中...)
所以最终结果:
return (!value) ? '' : value.replace(/ /g, '');
是:
强制 value
为布尔值:Falsey 值变为 false
,所有其他值变为 true
.
反转布尔值。
如果反转布尔值是true
,return ''
;否则,评估 value.replace(/ /g, '')
和 return 结果。
我的猜测是 value
始终是一个字符串。如果是这样,那么简短的版本是: 如果 value
是 ""
,return ""
;否则,return value
的内容删除了所有空格。
旁注:!value
周围的 ()
完全没有必要。
我在 AngularJS here 中找到了应用过滤器的优秀代码。它按预期工作,虽然我有点不确定缩短使用的是什么! ?和 : 在这种情况下将取代。
根据经验,它看起来像 ?和 : 是一个三元运算符,虽然我不完全确定 !有。
环顾Whosebug,似乎!根据上下文有多种功能,即 3755606.
app.filter('myFilterName', function () {
return function (value) {
return (!value) ? '' : value.replace(/ /g, '');
};
});
!
是 logical NOT operator:它将其参数强制转换为布尔值,然后反转该值(例如,true 变为 false,false 变为 true)。 if (!value)
检查 value
是否有错误值。什么是 "falsey" 值?强制为布尔值时变为假的任何值。那是 null
、undefined
、""
、NaN
、0
,当然还有 false
.
test ? one_thing : another_thing
是 conditional operator。如果正在测试的值是真值,则计算 ?
之后的表达式并且条件表达式采用该结果;如果不是,则计算 :
之后的表达式,条件表达式采用 that 结果。 (您有时会听到称为 "ternary" 运算符的条件运算符。它确实是 a 三元运算符 [接受三个操作数的运算符],并且它是目前 JavaScript 中唯一的三元运算符,但它的专有名称是 'conditional operator'。理论上,有一天可以将其他三元运算符添加到该语言中...)
所以最终结果:
return (!value) ? '' : value.replace(/ /g, '');
是:
强制
value
为布尔值:Falsey 值变为false
,所有其他值变为true
.反转布尔值。
如果反转布尔值是
true
,return''
;否则,评估value.replace(/ /g, '')
和 return 结果。
我的猜测是 value
始终是一个字符串。如果是这样,那么简短的版本是: 如果 value
是 ""
,return ""
;否则,return value
的内容删除了所有空格。
旁注:!value
周围的 ()
完全没有必要。