表达式使用&的意外结果

San*_*kar 1 javascript

在这里

document.write(eval("(2 == 2)"));
Run Code Online (Sandbox Code Playgroud)

它打印真实

document.write(eval("(2 == 2)&(5<10)"));
Run Code Online (Sandbox Code Playgroud)

它打印1
为什么不总是返回true或false.如果条件增加字符串,它给出0或1.什么是获得相同类型的结果的方式.

T.J*_*der 5

因为&它不是逻辑运算符,所以它是一个按位(数字)运算符.你可能意味着&&,逻辑AND运算符.

请注意,没有理由eval在代码示例中使用.(几乎没有任何理由可以使用eval,几乎总是有更好的替代方案 - 在这种情况下,你甚至不需要替代方案.)删除它会产生完全相同的结果.