• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > JavaScript中日常收集常见的10种错误(推荐)

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

作者:Tthe_last 字体:[增加 减小] 来源:互联网 时间:2017-05-11

Tthe_last通过本文主要向大家介绍了javascript中,javascript中的this,javascript中的闭包,javascript中alert,javascript中的事件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 1 对于this关键词的不正确使用

Game.prototype.restart = function () { 
this.clearLocalStorage(); 
this.timer = setTimeout (function() { 
this.clearBoard(); 
}, 0); 
};
</div>

运行上面的代码将会出现如下错误:

uncaught typeError:undefined is not a function
</div>

为什么会有这个错? this是指代当前对象本身,this的调用和它所在的环境密切相关。上面的错误是因为在调用setTimeout函数的时候,实际调用的是window.setTimeout,而在window中并没有clearBoard();这个方法;

下面提供两种解决的方法。

1,将当前对象存储在一个变量中,这样可以在不同的环境被继承。

Game.prototype.restart = function() { 
this.clearLocalStorage(); 
var self = this; 
this.timer = setTimeout(function(){ 
self.clearBoard(); }, 0); 
}; //改变了作用的对象 
</div>

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(); 
};
</div>

2 传统编程语言的生命周期误区

在js中变量的生存周期与其他语言不同,举个例子

for (var i=0; i<10;i++){ 
/* */ 
} 
console.log(i); //并不会提示 未定义,结果是10 
</div>

在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);
</div>

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

4 比较运算符

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

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • javascript 中关于array的常用方法详解
  • javascript 判断一个对象为数组的方法
  • JavaScript比较两个数组的内容是否相同(推荐)
  • JavaScript实现简单的四则运算计算器完整实例
  • JavaScript纯色二维码变成彩色二维码
  • 深入理解Javascript中的作用域链和闭包
  • JavaScript基于replace+正则实现ES6的字符串模版功能
  • javascript 中null和undefined区分和比较
  • JavaScript 函数的定义-调用、注意事项
  • JavaScript中this的用法及this在不同应用场景的作用解析

相关文章

  • 2017-05-11jQuery Form表单取值的方法
  • 2017-05-11jquery——九宫格大转盘抽奖实例
  • 2017-05-11微信小程序中多个页面传参通信的学习与实践
  • 2017-05-11jquery 实时监听输入框值变化的完美方法(必看)
  • 2017-05-11JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
  • 2017-05-11详解Angular中的自定义服务Service、Provider以及Factory
  • 2017-05-11详解Vue生命周期的示例
  • 2017-05-11JS组件系列之MVVM组件构建自己的Vue组件
  • 2017-05-11win系统下nodejs环境安装配置
  • 2017-08-21js鼠标定位

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何正确理解javascript的模块化
    • JS基于onclick事件实现单个按钮的编辑与保存功能示例
    • 原生JS实现跑马灯效果
    • 深入理解javascript的getTime()方法
    • React快速入门教程
    • JavaScript函数参数的传递方式详解
    • 使用WebGL + Three.js制作动画场景
    • 详解Vue 普通对象数据更新与 file 对象数据更新
    • 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
    • 原生JS实现图片翻书效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有