看一个人的回答有感(怎么判断数组中有没有未定义的值,如:[,,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了。

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

好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
原文地址:https://www.cnblogs.com/wangxi01/p/6228842.html