我正在阅读第三方JavaScript库的代码,它有以下行:
x2 = x1 - minWidth * (x2 < x1 || -1);
x1,x2和minWidth都是数字
我想知道这个(x2 < x1 || -1)
部分.比较运算符如何在这里工作?
首先,我们来看看短路.假设你有一条线
var A = B || C;
如果B
是真值,A
则将设置为B
.如果不是,则A
等于C
.
重新应用于您的情况,如果x2 < x1
为真,则表达式的结果将是true
.否则,结果将是-1
.
接下来,我们考虑类型转换如何在Javascript中工作.只要您使用给定值相乘,该值就会被强制转换为数字.因为true
,这个数字是1
.
最终,它意味着"如果x2> = x1,则翻转最小宽度的符号."