排名前十的JS报错以及如何避免它们( 二 )


有很多种方法可以解决上面的问题:
1、可以将外层的this存下来,这样self指向的还是windows 。
var self=this;// save reference to 'this', while it's still this!document.addEventListener("click", function(){self.clearBoard();});2、也可以用bind改变this的指向 。
document.addEventListener("click",this.clearBoard.bind(this));七、 Uncaught RangeError这个错误会在Chrome的很多场景下出现 。其中有一种就是使用了递归却没有使用停止的条件 。

排名前十的JS报错以及如何避免它们

文章插图
 
八、TypeError: Cannot read property ‘length’这个错误是调用了undefined的length属性,发生在Chrome中 。
排名前十的JS报错以及如何避免它们

文章插图
 
所以我们在取一个变量的length时候,一般都是string或者array,要注意他们是有值的 。
九、Uncaught TypeError: Cannot set property给undefined设置属性的时候会报错 。
排名前十的JS报错以及如何避免它们

文章插图
 
十、ReferenceError: event is not defined访问一个没有定义或者不在当前作用域的变量会报这个错 。
排名前十的JS报错以及如何避免它们

文章插图
 
什么时候容易出这个错呢?在事件的回调中,如果要使用event要注意传入event 。
document.addEventListener("mousemove", function (event) {console.log(event);})因为有些浏览器不会自动帮你传,比如火狐,就会报错 。所以最好还是自己传 。
原文链接:
Top 10 JAVAScript errors from 1000+ projects (and how to avoid them)?rollbar.com
 
参考文档:
Script Error产生的原因及解法?juejin.im




推荐阅读