<script language="javascript">
 1.var str="行了";
 2.var str0="好样的";
 
 3.var str1=str && str!=null ? str+"123" : str0
 
 4.document.write(str1);
</script>
当str不为空时,为什么3处的&&后的三目运算不执行,只有当str
为空时才执行?????

解决方案 »

  1.   

    你骗我……你用什么浏览器啊,我用chrome,这里显示的是 "行了123"
      

  2.   

    执行了啊str1结果为 行了123 
      

  3.   

    var str1=(str && (str!=null)) ? str+"123" : str0
      

  4.   

    var str1=(str && (str!=null)) ? str+"123" : str0
      

  5.   

    str && str!=null其实是重复判断。str存在,后面的str!=null是一定不成立的
    str不存在,后面的表达式不再执行了
      

  6.   

    str不存在时后面的三目运算仍执行,楼上的不能把三目运算换成一般运算。前面判断了str,后面有用三目运算判断str,为什么这样设计??这是看一个插件中的源码的写法,不是很懂这样设计的道理
      

  7.   

    你没有了解执行顺序把?执行的过程是先执行
    先执行这个判断 str && str!=null如果为true,返回str+"123"赋值给 str1,返回false则把str0赋值给str1
      

  8.   

    执行顺序我知道,为什么不直接写var  str!=null ? str+"123" : str0,添加前面的.var str1=str && 不显得多余吗???
      

  9.   

    <html>
    <head>
    <script language="javascript">
      function aa(){
      //var str="行了";
      var str;
      var str0="好样的";
     
      var str1=str && str!=null ? str+"123" : str0
      alert(str1);
      
     }
     
    </script>
    </head>
    <body onload="aa()">
    </body>
    </html>执行了呀,有问题了可以走断点试试