一、堆栈溢出
不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,以至于覆盖了别的数据。
1、哪些操作会引起堆栈溢出?
比如递归
2、如何解决堆栈溢出?
闭包,setTimeout,优化调用。

二、内存泄漏
动态存储分配函数内存空间,在使用完毕后未释放,一直占据该内存单元,直到程序结束。指任何对象在您不再拥有或需要它之后仍然存在。
1、哪些操作会引起内存泄漏?

  • 设置全局变量
  • 没有及时清理的定时器或回调函数
  • setTimeout的第1个参数使用字符串而非函数
  • 闭包

2、如何防止内存泄露?

  • 不要动态绑定事件,最好采用事件代理去绑定事件;
  • 如果动态绑定了事件,必须提供destroy方法,保证移除dom后,事件也被移除。这点可以参考Backbone的源代码,做的比较好。
  • 组件销毁时,移除所有定时器,事件监听;
  • 组件销毁时,移除地图的mark,tips,热力图对象。

3、如何解决内存泄漏?
JavaScript有自动垃圾回收机制,能够找出那些不再继续使用的值,然后释放其占用的内存,垃圾收集器每隔固定的时间段就执行一次释放操作。
垃圾回收有两种基本策略:标记清除和引用计数。
在局部作用域中,当函数执行完毕,局部变量也就没有存在的必要了,垃圾收集器很容易做出判断并回收。但是全局变量什么时候需要自动释放内存空间则很难判断,因此开发项目时,需要尽量避免使用全局变量。

三、页面打不开

1、要求http协议,不能用file本地打开html

Not allowed to load local resource: blob:null/806d63eb-a994-4353-9886-09989647435d

常见的Javascript报错及解决方案的更多相关文章

  1. 新手常见的python报错及解决方案

    此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们.后续会不断补充. 目录 1.NameErr ...

  2. 关于Entity Framework中的Attached报错相关解决方案的总结

    关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法 ...

  3. Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案

    Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案 网上太多相关资料,但是抄袭严重,有的讲的也是之言片语的,根本不连贯(可能知道的人确实不想多说) 我总共 ...

  4. Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案

    Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案   在win7 32位旗舰版下,启动1.0.8版本nginx,显示如下错误:  [plain] 2012/04/0 ...

  5. Mac上PyCharm运行多进程报错的解决方案

    Mac上PyCharm运行多进程报错的解决方案 运行时报错 may have been in progress in another thread when fork() was called. We ...

  6. 安装Redis-cluster-gem install redis报错的解决方案

    错误描述: [root@eshop-cache01 local]# gem install redis ERROR: Loading command: install (LoadError) cann ...

  7. ELK报错及解决方案

    ELK报错及解决方案 1.jdk版本问题 报错如下: future versions of Elasticsearch will require Java 11; your Java version ...

  8. 一些webpack常见编译报错的解决方案

    重新安装依赖可以解决80%的webpack编译报错问题. rm -rf node_modules rm package-lock.json npm cache clear --force npm in ...

  9. 利用Maven管理工程项目本地启动报错及解决方案

    目前利用Maven工具来构建自己的项目已比较常见.今天主要不是介绍Maven工具,而是当你本地启动这样的服务时,如果遇到报错,该如何解决?下面只是参考的解决方案,具体的解法还是得看log的信息. 1. ...

随机推荐

  1. 简明Python教程 ~ 随书笔记

    本文是阅读<简明Python教程>所做的随书笔记,主要是记录一些自己不熟悉的用法,或者所看到的比较有意思的内容,本书英文版A Byte of Python, 中文译版 简明Python教程 ...

  2. Linux查看日志三种命令

    第一种:查看实时变化的日志(比较吃内存) 最常用的: tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令   其他情况: tail -n ...

  3. js中call与apply的区别以及使用~

    今天看了一下call与apply的区别~~ <!DOCTYPE html> <html> <head> <title>testCall</titl ...

  4. Python练习-生成器-一个生成器被坑的体无完肤

    代码如下,尽可能独立阅读: # 编辑者:闫龙 from urllib.request import urlopen #导入一个包,这就是egon留的一个坑 def get(url):#这是为了保证题目 ...

  5. php登陆界面刷新验证码 javascript 的写法

    <script type="text/javascript"> function refreshVerify(){ var imgId = document.getEl ...

  6. NodeJS让前端与后端更友好的分手

    学问   最近“上层建筑”在兴起国学热,所以公司几个月前决定开发一款名叫“学问”的有关于国学的app.     APP的详情页面还是由web来显现具体内容,有些类似于新闻页,图文混排什么的web是最适 ...

  7. Java编程思想 4th 第1章 对象导论

    所有编程语言都提供抽象机制. 面向对象编程似乎是一种很好的编程思想和方式,面向对象编程中的对象简洁描述是:对象具有状态.行为和标识.状态指的是数据存储,存储的数据能反应状态:行为指的是方法,方法表示对 ...

  8. vue引入jquery的方法

    1.局部引入 通过命令下载jquery   npm install jquery --save-dev 在需要引入jquery的组件中通过import $ from 'jquery'引入即可 2.全局 ...

  9. vs2010,vs2012注释快捷键

    注释:VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C) 反注释:VS2010是(Ctrl+E,U),VS2012是(Ctrl+K, Ctrl+U)

  10. springboot配置fastjson后端往前端传输格式化

    import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.Spri ...