您知道eval中的和括号的含义吗

您知道eval中的和括号的含义吗
obj.alexa = eval("(" + obj.alexa + ")");

  

  知道大家有木有注意到 eval() 还要用一对圆括号将字符串包起来,对此我寻找到比较好的解释就是:

原因

   归结于 eval 本身的问题,由于 json 是以 {} 的方式来开始以及结束的,在 JavaScript 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

解决方法

  加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执 行。举一个例子,例如对象字面量 {},如若不加外层的括号,那么 eval 会将大括号识别为 JavaScript 代码块的开始和结束标记,那么 {} 将会被认为是执行了一句空语句。

 

posted @ 2022-09-30 09:57  奥兰王子  阅读(75)  评论(0编辑  收藏  举报