源代码如下
/*添加方法检测数组内重复元素*/
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]]||[]; 是啥意思
/*添加方法检测数组内重复元素*/
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]]||[]; 是啥意思
if(this.length<2) [this[0]]||[];这感觉应该是少了个return;
if(this.length<2) return [this[0]]||[]; 当元素个数小于2时没有必要做后面的判断了,
[this[0]]||[]这个是构造一个新的数组,如果this[0]有值则返的[this[0]]否则返回[]空数组
LZ 加个returan 试试
false || true 返回true能理解吧
那false || 1呢
返回的就是1
这样做的目的就是如果前面这个表达式是false或是隐式=>false的话
就用后面的替代
这个是自动类型转换的一些资料:http://www.xiaoxiaozi.com/2009/09/03/1429/
[this[0]]||[]不过我感觉这个应该有问题,即使this.length==0返回的应该是[undefined]
最好改成这样if(this.length<2) return (this[0]&&[this[0]])||[];
要么把这句去掉if(this.length<2) [this[0]]||[];//留着没有意义,还连累自己看不懂
要不就把return 加上
当然a.length<2
那么当x为何值的情况下 this[0] 是true 什么情况下是 false?
还有 [] 是一个空数组 8楼大哥说是true 为什么?
你到我给你那个链接里在看看里面那个表说得很清楚的你对照着多看几次