我正在做這個計算器項目,我想檢查操作是否有效,不知何故我不能檢查eval
的布爾值如果它是false
?在控制檯上:如何檢查eval()上的布爾值還是算術運算錯誤?
Boolean(eval('2+2(9.1-)9'));
Boolean(2+2(9.1-)9); // Both operations return unexpected token
不像Boolean(2+2)
< - 返回true
。幫幫我?
我正在做這個計算器項目,我想檢查操作是否有效,不知何故我不能檢查eval
的布爾值如果它是false
?在控制檯上:如何檢查eval()上的布爾值還是算術運算錯誤?
Boolean(eval('2+2(9.1-)9'));
Boolean(2+2(9.1-)9); // Both operations return unexpected token
不像Boolean(2+2)
< - 返回true
。幫幫我?
如果我正確理解你的問題,你唯一想知道的是「這是一個有效的表達式」。一個非常簡單的方法來檢查這是使用eval()
像你這樣做,並把它包含在try
,並看看是否有任何錯誤發生。例如,你可以這樣寫:
try {
eval('2+2(9.1-)9');
valid = true;
} catch (e) {
valid = false;
}
之後,可變valid
包含true
如果表達式是有效的,並且false
如果事實並非如此。
但是eval()
的警告雖然:每個有效的代碼都會通過這個測試,不僅僅是數學表達式:Plus,代碼將被執行。小心你給了它什麼字符串。
你其實並不需要評估,以便代碼,看看它是否有效 - 只是try
創建Function
:
function checkIt() {
var fn
try {
var fn = new Function(document.getElementById("code").value)
alert("Great, that's a valid piece of code!")
} catch (e) {
alert("That's not a valid piece of code.")
}
}
<input id="code">
<button onclick="checkIt()">Check it</button>
例如,嘗試 「123」,「有效「和」''不是[有效!!!]。
雖然如果你是要馬上評估它,如果它是有效的,你應該檢查錯誤是否是語法錯誤,否則。
function doIt() {
var fn
try {
var result = eval(document.getElementById("code").value)
alert("The result is: " + result)
} catch (e) {
if (e instanceof SyntaxError) {
alert("That's not a valid piece of code.")
} else {
alert(e.message)
}
}
}
<input id="code">
<button onclick="doIt()">Check it</button>
例如,嘗試你以前嘗試過同樣的事情,看看這種行爲。
你爲什麼在這種情況下使用eval? - 還有'2 + 2(9.1-)9'無效 – evolutionxbox
你想做什麼? '2 + 2(9.1-)9'沒有數學意義。 –
「2 + 2(9.1-)9」是什麼意思? – domyos