看一个人的回答有感(怎么判断数组中有没有未定义的值,如:[,,1,,3])

之前在一个网站上面看到别人问这样一个问题,我就打开进去看,看到其中一个人的回答是这样子的:

Array.prototype.hasVal = function(val) {
  var i = 0, n = this.length;
  for (; i < n; ++i) if (this[i] === val) return true;
  return false;
}
 
console.log([,,1,,3].hasVal(undefined));

我看是看的懂,但是我自己写的话,肯定就写不出这个厉害的代码了,首先Array.prototype.hasVal我觉得有些像是构造函数似的(当时还不懂原型),其次,他把var i =0写到外面,我觉得这样的话,就弄成了变量放到外面,下次如果别人要改什么东西的话就可以集中一起改了。第三,他判断的是this[i]===val,而val是方法传进来的参数,这样就很灵活,下次你要用这个方法的时候,还可以传其他的参数,就不只是局限于只能判断undefined了。

最后:别人的代码这么厉害,随便一写也含有深意,我还有很长的路要走啊。

posted @ 2016-12-28 11:35  来亦何哀  阅读(472)  评论(0编辑  收藏  举报