如果
document.write(eval("(2 == 2)"));
打印 true
并且
document.write(eval("(2 == 2)&(5<10)"));
打印 1
为什么不总是返回true或false。如果条件在字符串中增加,则给出0或1.获得相同类型结果的方法是什么。
答案 0 :(得分:5)
因为&
不是逻辑运算符,所以它是bitwise (numeric) operator。您可能需要&&
,logical AND operator。
请注意,您的代码示例中没有理由使用eval
。 (几乎永远不会使用eval
的任何理由,几乎总是有更好的选择 - 在这种情况下,你甚至不需要替代方案。)删除它会有完全相同的结果
答案 1 :(得分:1)
&
是一个按位运算符并返回一个数字。试试"(2 == 2)&&(5<10)"
答案 2 :(得分:1)
它打印1
,因为您使用了按位和运算符(&
)而不是逻辑和运算符(&&
)。
因为JavaScript是松散类型的,它会将布尔值true
视为1
的int值,您可以通过调用来检查
document.write(eval("(2 == 2)+(5<10)"));
结果将是
2