2025-02-25 00:34:08
字符串"\u003cspan dir\u003d\"ltr\"\u003e\u003cspan class\u003d\"yP\" email\u003d\"haha@gmail.com\"\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e" 中内部的双引号都是 \" 这种形式的,我不知道为什么会产生干扰。而且,这段字符串是一个标准的html文档中的span element,在您的code执行之后span属性的值都没了引号。
var str = "['hana','(\u003cspan dir\u003d\"ltr\"\u003e\u003cspan class\u003d\"yP\" email\u003d\"haha@gmail.com\"\u003eHa Ha Ha\u003c/span\u003e\u003c/span\u003e)']";
var objarr = eval(str); //和JSON.parse()的功能一样
alert(objarr[1]);
这样写。原本你的字符串是用单引号括起了双引号,现在改用双引号括起单引号,这样就没有问题了。
用双引号将单引号括起来后eval()确实可以实现功能,但是JSON.parse()却不行。还有一个问题如果将内部的双引号都改为单引号,程序的执行效率会下降,实际需要处理的字符串可能会是例子的上百倍。
JSON.parse()是你使用的库,eval函数是javascript的原始函数,库具体实现我没研究,要使用的话你自己研究下,或者换用eval函数,出问题的原理是已经搞清楚了,其他的就看你了。
至于执行效率的问题,用单引号和双引号是没有差别的,只是你字符串你需要使用双引号就用单引号括,反之用双引号而已。没有效率的问题。
这不是php,单引号双引号还会区分是要解析还是直接显示。
2025-02-25 00:40:50