源代码如下
/*添加方法检测数组内重复元素*/
Array.prototype.strip=function(){
            if(this.length<2) [this[0]]||[];
                  var arr=[];
           for(var i=0;i<this.length;i++){
                  arr.push(this.splice(i--,1));
                  for(var j=0;j<this.length;j++)
      {
                          if(this[j]==arr[arr.length-1])
        {
                                  this.splice(j--,1);
           }}}
return arr;
}
if(this.length<2) [this[0]]||[];这句不懂  主要是不懂 [this[0]]||[]; 是啥意思

解决方案 »

  1.   

    这里的this是代表的当前的数实例至于
    if(this.length<2) [this[0]]||[];这感觉应该是少了个return;
    if(this.length<2) return [this[0]]||[]; 当元素个数小于2时没有必要做后面的判断了,
    [this[0]]||[]这个是构造一个新的数组,如果this[0]有值则返的[this[0]]否则返回[]空数组
      

  2.   

    我以为[this[0]]||[]是返回一个布尔值呢
      

  3.   

    写法真多
    LZ 加个returan 试试
      

  4.   

    加不加 return 都行 ···
      

  5.   

    关于[this[0]]||[]能不能再详细说说??
      

  6.   

    ||代表或对吧
    false || true 返回true能理解吧
    那false || 1呢
    返回的就是1
    这样做的目的就是如果前面这个表达式是false或是隐式=>false的话
    就用后面的替代
      

  7.   

    [this[0]]||[]遇到真时直接返回,JS自动类型转换
    这个是自动类型转换的一些资料:http://www.xiaoxiaozi.com/2009/09/03/1429/
    [this[0]]||[]不过我感觉这个应该有问题,即使this.length==0返回的应该是[undefined]
    最好改成这样if(this.length<2) return (this[0]&&[this[0]])||[];
      

  8.   

    最后给你个小建意:
    要么把这句去掉if(this.length<2) [this[0]]||[];//留着没有意义,还连累自己看不懂
    要不就把return 加上
      

  9.   

    还是有点不懂  再帮帮吧比如有数组 a=[x]  //x是变量
    当然a.length<2
    那么当x为何值的情况下 this[0] 是true   什么情况下是 false?
    还有 [] 是一个空数组 8楼大哥说是true 为什么?
      

  10.   

    你还是把if去掉吧...if(this.length<2) return (this[0]&&[this[0]])||[];//这样写还是有问题的,当this[0]=0时会出问题,
    你到我给你那个链接里在看看里面那个表说得很清楚的你对照着多看几次