var fdad=("1","2",0,123,0);这是什么格式?var dasd=eval(function(){}("1","2"));还有这种。
这都是什么写法 为什么没有报错??

解决方案 »

  1.   


    var fdad=("1","2",0,123,0);// 0 fdad被赋值,值等于0var dasd=eval(function(){}("1","2"));//null一个空函数被传进两个参数后执行,eval执行之后赋值给dasd
      

  2.   

    1、var fdad=("1","2",0,123,0);这个返回括号里最后一个值,所以是0
    2、var dasd=eval(function(){}("1","2"));
    这里要说下2#,这里的dasd的值不是null,而是undefined
    这里主要原因在于eval函数,而eval函数它接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。因此这里最后的dasd的结果是undefined.
      

  3.   

    可能我没说清楚,我再说一下吧,因为eval(function(){}("1","2"));这里eval函数里的并不是一个字符串,所以他直接返回的就是function(){}("1","2");即等价于var dasd=function(){}("1","2");
    但又因为function(){}("1","2");这个函数没有函数体,所以无论后面的是什么,dasd始终就是等于undefined。
      

  4.   


    很好,想问一下:
    function(){}("1","2")后面是传进去两个参数 然后执行函数吧?