if if语句在测试时是否始终返回true,如果value在某个范围内

nic*_*ael 0 javascript if-statement

我写了这段代码:

if (10 < prompt("Enter a number from 10 to 30") < 30) {
    alert("Ok");
}
Run Code Online (Sandbox Code Playgroud)

问题是它总是返回true(如果我输入任何数字).谁有人解释原因?

Nik*_* B. 7

因为它被解析为

(10 < prompt(...)) < 30
Run Code Online (Sandbox Code Playgroud)

因为(10 < prompt(...))是一个布尔表达式,在数值上下文中转换为0或1,这是其中之一

0 < 30
Run Code Online (Sandbox Code Playgroud)

要么

1 < 30
Run Code Online (Sandbox Code Playgroud)

两者都是真的.


Ori*_*iol 5

在javascript中没有a < b < c比较.你必须使用a < b && b < c:

var num = prompt("Enter a number from 10 to 30");
if(10<num && num<30) alert("Ok");
Run Code Online (Sandbox Code Playgroud)