eval函数-求值顺序

eval function - order of evaluation

本文关键字:顺序 函数 eval      更新时间:2023-09-26

当我给出下面的语句时,输出显示为-200。

有人能帮我弄清楚eval()内部到底发生了什么吗

alert(eval(5-5*5+"5 + 5"));

有两个步骤:通过您看到的操作计算字符串,然后对该字符串求值。

你所评估的是的结果

5-5*5+"5 + 5"

哪个是

( 5 - (5*5) ) + "5 + 5"

哪个是

-20 + "5 + 5"

这里有一个稍微棘手的部分:添加数字和字符串是通过字符串串联完成的,所以该操作的结果是

"-20" + "5 + 5"

它给出

"-205 + 5"

然后对该字符串进行求值,从而得到-200