function xxx(a, b, c, d) {
  var b = b || 0;
  var c = c || 1;
  var d = d || -1;
  alert(a+" "+b+" "+c+" "+d);
}
xxx(1,0,0,0);
弹出的是 1 0 1 -1
而不是 1 0 0 0
用arguments的方法也有同样的错误,有什么别的方法吗?

解决方案 »

  1.   

    弹出的是 1 0 1 -1
    而不是 1 0 0 0这是正确的
    a = 1那么:a||0则==1
    b = 0那么:b||0则==0
    c = 1那么;c||1则==1
    d = -1那么:d||-1 = 1   //负数也是真
      

  2.   

    除非把
      var b = b || 0;
      var c = c || 1;
      var d = d || -1;
    去掉方可达到你想要的效果,不过这不符合你原本的意思
      

  3.   

    准确的方法是判断变量是否已定义
    function xxx(a, b, c, d) {
      b = typeof b!="undefined"?b:0;
      c = typeof c!="undefined"?c:1;
      d = typeof d!="undefined"?d:-1;
      alert(a+" "+b+" "+c+" "+d);
    }
    xxx(1,0,0,0);