当我给出以下声明时,输出显示为-200。
任何人都可以帮助我了解eval()中实际发生的事情
alert(eval(5-5*5+"5 + 5"));

答案 0 :(得分:5)
有两个步骤:字符串由您看到的操作计算,然后该字符串被逐出。
您正在评估的是
的结果5-5*5+"5 + 5"
是
( 5 - (5*5) ) + "5 + 5"
是
-20 + "5 + 5"
这是一个稍微棘手的部分:adding a number and a string is done via string concatenation所以该操作的结果是
"-20" + "5 + 5"
给出了
"-205 + 5"
然后该字符串被唤醒,这会产生-200