为什么是先输出  z is 42  而不是 x is  z is 42
还有就是
为什么会输出420?  (也就是 x is 420)

解决方案 »

  1.   

    代码是按顺序执行的,在 
    console.log(‘x is', eval(str))
    里,先执行参数计算,也就是先执行了 eval,所以先执行了 str里的console.log(z is 42),最后返回x=420的值计算完参数后,再执行外部的
    console.log(‘x is', 420)
      

  2.   

    eval的结果就是420,下面这个console.log输入了两个参数,解释器要先计算出参数的结果,就先输出了z is 42,然后再合成输出x is 420
      

  3.   

    eval()是你第二个console.log的参数,所有eval()会先执行得出个结果,再将结果作为参数,eval()优先于第二个console.log;eval()函数在执行的时候会输出其中的console.log,这就是为什么先输出z is 42