簡體   English   中英

JavaScript和SyntaxError中的字符串函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM