![](/img/trans.png)
[英]SyntaxError: unterminated string literal calling php function in javascript function
[英]Function by string in javascript and SyntaxError
我創建一個let calc = new Function( return ${strExpression};
); 我想在運行之前檢查calc的語法,或者由calc()引發SyntaxError捕獲;
我試過了:
function compute(strExpression){
let calc = new Function(`return ${strExpression};`);
try {
result = calc();
return result;
} catch (error) {
return null;
}
}
對於一些無效的strExpression,我可能會得到一個錯誤,在這種情況下,我在控制台上看到了SyntaxError,但catch無效。
您看到一個錯誤
let calc = Function("some code");
因為給定的字符串不是有效的代碼。
您可以將行移動到try
塊中並捕獲錯誤。
var result = function() { try { let calc = Function("some code"); result = calc(); return result; } catch (error) { return null; } }(); console.log(result);
我根據您更新的問題更改了答案。 然后從可能發生異常的地方完整的代碼塊應保留在try塊中,如下所示:
function compute(strExpression){
try {
let calc = new Function(`return ${strExpression};`);
result = calc();
return result;
} catch (error) {
return null;
}
}
但是您也應該記住一些事情。 如果我像下面這樣用空參數調用上面的函數,將會發生什么?
console.log(compute());
在那里,你希望在應該去catch
塊,但現實的情況是NO。 因為參數undefined
所以這也是JS中的一種數據類型,因此catch
塊中沒有。 因此,在使用try catch
時,您也應該鍵入這些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.