我在以下代码中遇到过Mithril.js:
finish(state == 1 && 3)
Run Code Online (Sandbox Code Playgroud)
对于我的(Java/C程序员)来说,它看起来应该总是调用,finish(true)如果state是1,finish(false)如果state不是1.但它实际上似乎是finish(3)针对前者和finish(false)后者.
这背后的逻辑是什么?
这是JavaScript中的惯用语,还是一个坏主意?对我而言,这是非常模糊的.
kay*_*kay 13
您可以解释运算符||,&&如下所示:
A || B
? A ? A : B
A && B
? A ? B : A
Run Code Online (Sandbox Code Playgroud)
但没有评估A两次.
在JavaScript中,&&运算符不会将结果强制为布尔值.它反而类似于:
var _temp = state == 1;
finish(_temp ? 3 : _temp);
Run Code Online (Sandbox Code Playgroud)
测试感实性的左侧,然后返回或者权当truthy或左其他.
它是JavaScript,&&和||的特征 运算符始终返回它评估的最后一个值.
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |