js 内置eval函数问题? 400 报错
在利用javascript内置的eval函数,将json格式的字符串转换成JS对象时,需要用一对"()"先将该字符串包住.这是为什么呢?,请大侠们说明原因及原理
例如:
将 var strTest='{"a":"b"}'; 转换成JS对象
正确写法:
var objTEST=eval("("+strTEST+")") ;
出错写法:
var objTEST=eval(strTEST);
如果你不加(),那么js编译器会认为{}是一个代码块,而不是一个对象块,然后由于一个代码块里包含了:,就会报错了。
你加了一个,js会默认识别这个为一个对象块,就变成一个json对象了。
如果你非得不想加这个()
你也可以尝试这样:
var strTest = "var objTEST = {'a' : 'b'}"; eval(strTest); console.log(strTest);
这样也是可以执行的,但是灵活性就差很多了。所以还是推荐使用eval()中间加括号的方案
另外也可以看这个:http://www.json.org/js.html
######谢谢“JustForFly”我明白了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。