test1 ? (test2 ? 语句1 : 语句2) : (test3 ? 语句3 : 语句4 )
试过吗?  我记得好像好使吧!

解决方案 »

  1.   

    可以的呀
     
      i=2?a=1:b=1
      

  2.   


    alert(1==2?1:2==3?2:3==4?3:4);
      

  3.   

    理论上来说,除了try..catch的结构,大部分的控制流程都可以使用表达式改写。
      

  4.   

    这个工作。
    <script language="javascript">
       a = false;
       a?(c=1):(c=2);
       alert(c);
    </script>这个不工作。
    <script language="javascript">
       a = false;
       a?(c=1;c=3;):(c=2;c=4;);
       alert(c);
    </script>
      

  5.   

    不工作的可以用eval()
    a?eval("c=1;c=3;"):eval("c=2;c=4;");
      

  6.   

    可以用逗号操作符
    <script language="javascript">
       a = false;
       a?(c=1,c=3;):(c=2,c=4;);
       alert(c);//4
    </script>
      

  7.   

    分清表达式和语句
    js中,表达式一定是语句,语句不一定是表达式。
    不是表达式的语句,只有两种:var和function
    三目运算符,只可用于表达式。
    例如:1 ? alert(1) : alert(0);
    复合语句,没问题!
    只要按规则嵌套,适当的时候加括号就行了
    1 ? ( 0 ? alert(1) : alert(2) ) : alert(3);
    (1, 2, 0) ? alert('haha') : alert('heihei');