javascript - 如何判断字符串是否包含数组、对象数组或函数定义

标签 javascript

我现在有一个解决方案,但它不是我认为的最好的。

function parseEval(value){
    var result = undefined;
    try {
      result = eval(value);
    } catch (e) { }
    return result;
}

因此,如果 value 未定义或包含无法解释的值,则函数返回 undefined
如果包含现有的函数名称则返回函数对象
如果包含 [1,2,3]" 则返回 int array
如果包含 [{ label: "Choice1", value: "value1"},{ label: "Choice2", value: "value2"}]" 然后返回一个对象数组
我对任何解决方案都持开放态度,因为 eval 有很多缺点。 (性能、安全性、灵 active 、可维护性)

最佳答案

如果这是一个永远不会传递任何用户提供的数据的内部函数,这可能是最好的处理方式。否则,您可能最好使用 JSON.parse解析数据并在白名单中查找函数和其他非 JSON 数据:

var someObject = {
    aFunction: function() {},
    anInt: 42
};

function parse(value) {
    var result;
    try {
        return JSON.parse(value);
    } catch(e) {
        return someObject[value];
    }
}

关于javascript - 如何判断字符串是否包含数组、对象数组或函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993001/

相关文章:

javascript - keydown 事件删除我的 div 内容

javascript - Ajax 完成回调不等待不是函数

javascript - LokiJS 与 Cordova

javascript - 我无法使用 javascript 或 jquery 从 div 获取纯文本

javascript - rails : Image preview inside a cocoon gem field

javascript - 回调函数数组

javascript - react-export-excel 如何在导出时隐藏 excel 中的列?

javascript - ES6 类中的 jQuery 触发器不起作用

javascript - 加载图像后的类变量

javascript - 在 d3 树节点上设置可变宽度