1

这里如果

document.write(eval("(2 == 2)"));

它打印正确

document.write(eval("(2 == 2)&(5<10)"));

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

4

3 回答 3

5

因为&不是逻辑运算符,所以它是按位(数字)运算符。您可能是指&&逻辑AND 运算符

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

于 2012-07-13T10:28:13.730 回答
1

&是位运算符并返回一个数字。尝试"(2 == 2)&&(5<10)"

于 2012-07-13T10:28:32.757 回答
1

它打印1是因为您使用了按位与运算符 ( &) 而不是逻辑与运算符 ( &&)。

由于 JavaScript 是松散类型的,它会将布尔值true视为 int 值1,您可以通过调用来检查

document.write(eval("(2 == 2)+(5<10)"));

结果将是

2
于 2012-07-13T10:28:34.653 回答