我在一个JavaScript脚本中看到这样一句代码,不懂什么意思,怎么看都觉得它不合法:
if(p!=i)_(p,379,24)(p=i,24,379)
还有一句,我很怀疑它的格式和意图:
for(var r=document.getElementById(e).getElementsByTagName('dl'),c=clearInterval,i=-1,p=r[0],j; j=r[++i];)

解决方案 »

  1.   


    if(p!=i)//比较
        _(p,379,24)(p=i,24,379) //_应该是一个方法,调用 传三个参数进去,并且该方法返回值是一个方法,再调用传三个参数,并且在传值的时候把i的值 赋给p
    for(var r=document.getElementById(e).getElementsByTagName('dl'),c=clearInterval,i=-1,p=r[0],j; j=r[++i];)//for循环括号内2个;,前面 为赋值表达式,第二个为判断语句;后面的为空,这里不执行
      

  2.   

    if(p!=i)_(p,379,24)(p=i,24,379)
    这里的_可能是一个function,而且他可能会返回一个function,
    猜测是这样
    function _(p, m1, m2){
      ....
      return function(p1, m11, m22){
        .....
      }
    }
      

  3.   

    2楼的sohighthesky,谢谢你的回答,你说的第二个为判断语句,我不这样认为,因为j=r[++i];),只有一个等号,而不是==
      

  4.   

    谢谢你的回答,你说的第二个为判断语句,我不这样认为,因为j=r[++i];),只有一个等号,而不是==
      

  5.   

    二楼的理解正确。<script>
    var s;
    var b;
    if(b=s){
    alert('真')
    }else{
    alert('假')
    }
    </script>
    <script>
    var s = 2;
    var b;
    if(b=s){
    alert('真')
    }else{
    alert('假')
    }
    </script>将一个变量赋值(就是=运算符),也有返回值,返回的是这个变量的值。
    也就是,如果r[++i]不是undefined,那么就返回真,for继续执行,如果r[++i]是undefined,那么终止for
      

  6.   

    同意,不過應該少用這種寫法。
    判斷的時候也可以直接傳進去一個變量,如果這個變量為null、undefined、false或0,則條件不成立,其他的都成立。