为什么字符串与数字的比较在Javascript中有效

为什么字符串与数字的比较在Javascript中有效,javascript,Javascript,我试图将来自HTML文本字段的值与整数进行比较。它的工作原理与预期一致。 情况是— x >= 1 && x <= 999; x>=1&&x因为JavaScript定义了操作数在比较(与您使用的运算符)之前转换为公共类型的状态: 更常用的抽象比较(例如==)在进行比较之前将操作数转换为相同的类型。对于关系抽象比较(例如,如果变量是字符串,则应使用parseInt。Add=比较datatype值: parseInt(x) >== 1 && pars

我试图将来自HTML文本字段的值与整数进行比较。它的工作原理与预期一致。 情况是—

x >= 1 && x <= 999;

x>=1&&x因为JavaScript定义了操作数在比较(与您使用的运算符)之前转换为公共类型的状态:


更常用的抽象比较(例如==)在进行比较之前将操作数转换为相同的类型。对于关系抽象比较(例如,如果变量是字符串,则应使用
parseInt
。Add=比较
datatype
值:

parseInt(x) >== 1 && parseInt(x) <== 999;

parseInt(x)>==1&&parseInt(x)您不需要parseInt()。在将数字与字符串进行比较时,如果可能,JavaScript会将字符串转换为数字。另一个有趣的事实是:如果字符串不能转换为数字,则与任何东西(包括其本身)相比,它被视为
NaN
是false。因此,所有这些表达式都是false:
'a'==5
'a'<5
'a'>5
@Bergi-并将
NaN
转换为
0
。今天刚刚添加了它,显然还没有完全唤醒。感谢您将其标记出来!修复了。