没有合适的资源?快使用搜索试试~ 我知道了~
JavaScript中日常收集常见的10种错误(推荐)
0 下载量 186 浏览量
2020-10-20
16:46:22
上传
评论
收藏 48KB PDF 举报
温馨提示
试读
2页
本文是小编给大家日常收集整理的js中常见的10种错误,非常不错,具有参考借鉴价值,需要的朋友参考下
资源推荐
资源详情
资源评论
JavaScript中日常收集常见的中日常收集常见的10种错误种错误(推荐推荐)
本文是小编给大家日常收集整理的js中常见的10种错误,非常不错,具有参考借鉴价值,需要的朋友参考下
1 对于对于this关键词的不正确使用关键词的不正确使用
Game.prototype.restart = function () {
this.clearLocalStorage();
this.timer = setTimeout (function() {
this.clearBoard();
}, 0);
};
运行上面的代码将会出现如下错误:
uncaught typeError:undefined is not a function
为什么会有这个错? this是指代当前对象本身,this的调用和它所在的环境密切相关。上面的错误是因为在调用setTimeout函
数的时候,实际调用的是window.setTimeout,而在window中并没有clearBoard();这个方法;
下面提供两种解决的方法。下面提供两种解决的方法。
1,将当前对象存储在一个变量中,这样可以在不同的环境被继承。
Game.prototype.restart = function() {
this.clearLocalStorage();
var self = this;
this.timer = setTimeout(function(){
self.clearBoard(); }, 0);
}; //改变了作用的对象
2,使用bind()方法, 不过这个相比上一种会复杂,bind方法官方解释: msdn.microsoft.com/zh-cn/library/ff841995
Game.prototype.restart = function () {
this.clearLocalStorage();
this.timer = setTimeout(this.reset.bind(this)),
};
Game.prototype.reset = function() {
this.clearBoard();
};
2 传统编程语言的生命周期误区
在js中变量的生存周期与其他语言不同,举个例子
for (var i=0; i<10;i++){
/* */
}
console.log(i); //并不会提示 未定义,结果是10
在js中这种现象叫:variable hoisting(声明提前)
可以使用let关键字。
3 内存泄漏
在js中无法避免会有内存泄漏,内存泄漏:占用的内存,但是没有用也不能及时回收的内存。
例如以下函数:
var theThing = null;
var replaceThing = function() {
var priorThing = theThing;
var unused = function() {
if (priorThing) {
console.log(‘hi');
};
};
theThing = {
longStr: new Array(1000000).join(‘*'),
someMethod: function () {
console.log(someMessage);
}
}
setInterval(replaceThing, 1000);
资源评论
weixin_38603875
- 粉丝: 6
- 资源: 973
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功