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 相关文章推荐
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
Jul 17 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
JavaScript中的lastIndexOf()方法使用详解
Jun 06 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
Jul 25 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
微信小程序点击item使之滚动到屏幕中间位置
Mar 25 Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 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中文汉字验证码
2007/04/08 PHP
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
娱乐地球:Entertainment Earth
2020/01/08 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
应届毕业生求职信范文分享
2013/12/26 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
公司寄语大全
2014/04/10 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
被告代理词范文
2015/05/25 职场文书