这条JS系列如何运作?

Und*_*ble 4 javascript comparison operators

我正在阅读第三方JavaScript库的代码,它有以下行:

x2 = x1 - minWidth * (x2 < x1 || -1);
Run Code Online (Sandbox Code Playgroud)

x1,x2和minWidth都是数字

我想知道这个(x2 < x1 || -1)部分.比较运算符如何在这里工作?

Mik*_*uck 5

首先,我们来看看短路.假设你有一条线

var A = B || C;
Run Code Online (Sandbox Code Playgroud)

如果B值,A则将设置为B.如果不是,则A等于C.

重新应用于您的情况,如果x2 < x1为真,则表达式的结果将是true.否则,结果将是-1.

接下来,我们考虑类型转换如何在Javascript中工作.只要您使用给定值相乘,该值就会被强制转换为数字.因为true,这个数字是1.

最终,它意味着"如果x2> = x1,则翻转最小宽度的符号."