這裏如果意外的結果與
document.write(eval("(2 == 2)"));
它打印真正
而且
document.write(eval("(2 == 2)&(5<10)"));
它打印
爲什麼不總是返回true或false 。如果條件增加,則它給出0或1.什麼是w可以得到相同類型的結果。
這裏如果意外的結果與
document.write(eval("(2 == 2)"));
它打印真正
而且
document.write(eval("(2 == 2)&(5<10)"));
它打印
爲什麼不總是返回true或false 。如果條件增加,則它給出0或1.什麼是w可以得到相同類型的結果。
它打印1
因爲你使用的按位與運算符(&
),而不是邏輯和操作員(&&
)。
而且,因爲JavaScript是弱類型它將把布爾值true
爲1
int值,您可以通過調用
document.write(eval("(2 == 2)+(5<10)"));
檢查結果將是
2
因爲&
不是邏輯運算符,所以它是bitwise (numeric) operator。你的意思可能是&&
,logical AND operator。
請注意,在代碼示例中沒有理由使用eval
。 (幾乎有從來沒有任何理由使用eval
,在這種情況下幾乎總是有更好的替代 —,你甚至不需要替代品。)刪除它將有完全相同的結果。
&
是一個按位運算符並返回一個數字。嘗試"(2 == 2)&&(5<10)"
由於問題實際上與'eval'無關,我冒昧地修改了標題,以便其他人在遇到同樣的問題時可以找到它。 – 2012-07-13 10:33:05
謝謝T.J. Crowder糾正我和回答。 – 2012-07-13 10:38:44