ser*_*nni 16 javascript boolean numbers type-conversion
例如,JavaScript是非严格类型的语言,如Java.
我们知道,它根据上下文转换结果的值:
"2" + "3" 结果 "23"
"2" * "3" 结果 6
这很清楚,可以理解.
我只是尝试了以下表达式并感到困惑:
true && 1结果1
true || 1结果true
为什么第一个给出Number而第二个给出布尔值?
考虑到JavaScript转换规则,boolean由于boolean表达式的上下文,我希望在这两种情况下获得值.
查看Douglas Crockford的网站,它说:
&&运算符通常称为逻辑和.它也可以称为守卫.如果第一个操作数为false,null,undefined,""(空字符串)或数字0则返回第一个操作数.否则,它返回第二个操作数.这提供了一种编写null检查的便捷方法:
var value = p && p.name; /* The name value will only be retrieved from
p if p has a value, avoiding an error. */
Run Code Online (Sandbox Code Playgroud)
|| 运算符通常称为逻辑或.它也可以称为默认值.如果第一个操作数为false,null,undefined,""(空字符串)或数字0,则返回第二个操作数.否则,它返回第一个操作数.这提供了一种指定默认值的便捷方法:
value = v || 10; /* Use the value of v, but if v doesn't have a value,
use 10 instead. */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |