JavaScript中日常收集常见的10种错误(推荐)


Posted in Javascript onJanuary 08, 2017

 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);

如果执行这段代码,会造成大量的内存泄漏,光靠garbage collector是无法完成回收的,代码中有个创建数组对象的方法在一个闭包里,这个闭包对象又在另一个闭包中引用,,在js语法中规定,在闭包中引用闭包外部变量,闭包结束时对此对象无法回收。

4 比较运算符

console.log(false == ‘0'); // true 
console.log(null == undefinded); //true 
console.log(” \t\r\n” == 0);

以上所述是小编给大家介绍的JavaScript中日常收集常见的10种错误(推荐),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
javascript 弹出层组件(升级版)
May 12 Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 Javascript
js获得当前时区夏令时发生和终止的时间代码
Feb 23 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
Aug 26 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
javascript表单事件处理方法详解
May 15 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
详解使用webpack构建多页面应用
Dec 21 Javascript
Node.js+ELK日志规范的实现
May 23 Javascript
详解js中==与===的区别
Jan 08 #Javascript
JavaScript 动态三角函数实例详解
Jan 08 #Javascript
你不知道的 javascript【推荐】
Jan 08 #Javascript
js时间控件只显示年月
Jan 08 #Javascript
javascript函数的四种调用模式
Jan 08 #Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 #Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
Jan 08 #Javascript
You might like
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
两款万能的php分页类
2015/11/12 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
一个基于jquery的图片切换效果
2010/07/06 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
大学生个人自荐信样本
2014/03/02 职场文书
竞聘自述材料
2014/08/25 职场文书
文明单位申报材料
2014/12/23 职场文书
利用python做表格数据处理
2021/04/13 Python
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang