我现在有一个解决方案,但它不是我认为的最好的。
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/