如何检查字符串是否是有效的JavaScript?

3
我正在为我的游戏创建地图编辑器,并添加了一个功能,即将脚本添加到地图(文本区域)。然后由编辑地图的人编写的代码保存到变量中,当这个人保存地图时,该变量作为Map对象中的变量保存到JSON文件中。
当游戏加载地图时,此代码将转换为Function对象,然后启动。
我的问题是:是否有选项可以检查此字符串是否为有效的JavaScript,如果无效,则alert("Error" + error)或类似的内容?
// 编辑器仅供开发人员使用,不需要在服务器端进行安全检查。

也许这会有所帮助:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval - Ed Heal
但是如果字符串不正确,eval()会返回什么? - Brunon Blok
请确保代码正确,同时避免使用 eval 函数。 - Ed Heal
你能在服务器端完成这个操作,还是必须在客户端进行? - rckrd
关于给出的答案,对任意用户输入进行评估就像用锤子敲自己的头一样。这是攻击者的绝佳机会。最好在服务器端验证字符串。 - Teemu
显示剩余2条评论
2个回答

4
您可以执行以下操作:
try {
  eval("function f () {"
  + "user code here"
  + "}");
} catch (e) {
  console.log(e+"");
}

2
您可以将 eval 包裹在 try catch 中来验证 JS 字符串。以下是它的工作原理。enter image description here 无效的 JS 字符串会抛出未捕获的引用错误。它看起来可能如下:
try {
   eval('console.log("a")');
   console.log('Valid JS');
} catch (e) {
   console.log('Invalid JS');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接