您知道eval中的和括号的含义吗
您知道eval中的和括号的含义吗
obj.alexa = eval("(" + obj.alexa + ")");
知道大家有木有注意到 eval() 还要用一对圆括号将字符串包起来,对此我寻找到比较好的解释就是:
原因:
归结于 eval 本身的问题,由于 json 是以 {} 的方式来开始以及结束的,在 JavaScript 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
解决方法:
加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执 行。举一个例子,例如对象字面量 {},如若不加外层的括号,那么 eval 会将大括号识别为 JavaScript 代码块的开始和结束标记,那么 {} 将会被认为是执行了一句空语句。