首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端面试之JavaScript(总结)

,创建闭包最常见方式就是在一个函数里创建另一个函数,通过另一个函数访问这个函数局部变量,利用闭包可以突破作用域链,将函数内部变量和方法传递到外部 闭包特性:函数内嵌套函数;内部函数可以引用外部参数和变量...从而形成了所谓“原型链” 原型特点: JavaScript对象是通过引用来传递,当修改原型时,与之相关对象继承这一改变 10.JavaScript如何实现继承 构造函数绑定:使用 call 或...Document 对象是 HTML 文档节点与所有其他节点(元素节点,文本节点,属性节点, 注释节点) Document 对象使我们可以通过脚本对 HTML 页面所有元素进行访问 Document...在一个DOM上同时绑定两个点击事件:一个用捕获,一个用冒泡。事件执行几次,先执行冒泡还是捕获?...该DOM上事件如果被触发,执行两次(执行次数等于绑定次数) 如果该DOM是目标元素,则按事件绑定顺序执行,不区分冒泡/捕获 如果该DOM是处于事件流非目标元素,则先执行捕获,后执行冒泡 13.

1K20

怎样修复 Web 程序内存泄漏

更糟糕是,你刚刚泄漏了整个组件。由于 this.onMessage 绑定到 this,所以组件已泄漏,包括其所有子组件。而且很可能所有与组件相关联 DOM 节点也是如此。这会很快变得非常糟糕。...当你点击“获取快照(take snapshot)”按钮时,你已经捕获了该网页上特定 JavaScript VM 所有活动对象。...Chrome 连续产生多个快照才能真正清除引用内存。...事件监听器引用闭包所引用 someObject retainer 链 retainer 链将向你显示哪个对象正在引用泄漏对象。读取它方式是每个对象都由其下面的对象引用。...但是堆快照工具有几个限制: 如果保存并重新加载快照文件,则所有文件引用都将会丢失到分配对象位置。例如你不会看到在 foo.js 第 22 行事件监听器关闭。

3.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

iOS_理解Block(代码块)+底层实现

三、Block捕获变量+底层实现 1、捕获变量 2、捕获基本数据类型 3、捕获alloc变量 4、捕获静态局部变量 5、`__block`捕获变量 四、Block导致循环引用 1、MRC时代 2、ARC...其所占用内存区域是分配在堆。拷贝到堆上Block就成了带引用计数对象了。后续再执行copy都不会真的执行复制,只是递增Block对象引用计数。...​ 我们先来看一下捕获变量时Block底层实现和内部结构。...注:因而__block不能修饰全局变量和静态变量(因为这些变量不需要) 四、Block导致循环引用 ​ 我们知道当两个对象互相强引用(即:循环引用)时,就会导致内存泄露。...Block是包装了函数指针对象 6、Block里面使用成员变量怎样 ​ 实际上是:self->(成员变量名),导致引用 参考: OCblock底层实现原理 (参考结构图) 重识Objective-C

45720

Java基础面试题(二),你能接几招

同步可以避免出现死锁,读脏数据发生,一般共享某一资源时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除内容,就会出错,同步就会按顺序来修改。...介绍常见垃圾回收算法 根搜索算法(可达性分析): 从GCROOT开始,寻找对应引用节点,找到这个节点后,继续寻找这个节点引用节点。...当所有的引用节点寻找完毕后,剩余节点则被认为是没有被引用节点,及无用节点。...目前java可以作为GCroot对象有: 虚拟机栈引用对象(本地变量表),方法区静态属性引用对象,方法区中常量引用对象,本地方法栈引用对象(native) 标记-清除算法: 标记...标记-清除算法不需要进行对象移动,并且仅对不存活对象进行处理,在存活对象比较多情况下极为高效,但是由于标记-清除算法直接回收不存活对象,并没有对存活对象进行整理,因此导致内存碎片。

25100

2019年初 JS面试必考(概率大)面试题

在解析 HTML 生成 DOM 过程,js 文件下载是并行,不需要 DOM 处理到 script 节点。因此,script 位置不影响首屏显示开始时间。...如果遇到了一个引用外部资源脚本(script),它就必须停下来等待这个脚本资源下载,而这个行为导致一个或者多个网络往返,并且延迟页面的首次渲染时间。...当创建一个对象时,JavaScript 自动为该对象分配适当内存 垃圾回收器定期扫描对象,并计算引用了该对象其他对象数量 如果被引用数量为 0,或惟一引用是循环,那么该对象内存即可回收 哪些操作造成内存泄漏...JavaScript 内存泄露指对象在不需要使用它时仍然存在,导致占用内存不能使用或回收 使用 var 声明全局变量 闭包函数(Closures) 循环引用(两个对象相互引用) 控制台日志(console.log...我们设想一下,如果 JavaScript 是多线程,现在我们在浏览器同时操作一个 DOM,一个线程要求浏览器在这个 DOM 添加节点,而另一个线程却要求浏览器删掉这个 DOM 节点,那这个时候浏览器就会很郁闷

94420

Excel编程周末速成班第26课:处理运行时错误

在程序运行时发生程序错误称为运行时错误,重要是要理解运行时错误(或只是错误)与在VBA程序可能发生其他两类问题之间区别: bug是程序逻辑缺陷,导致程序产生不正确结果。...在此示例,r是一个变量,可以包含对Range对象引用,但是尚未初始化为引用实际单元格区域,因此第二行导致错误。...Dim r As Range r.Value = “Data” 其他错误是由硬件问题引起文件操作是导致错误常见原因,例如,当程序尝试写入已满磁盘或插入任何介质时尝试写入可移动介质驱动器时。...一个示例是Workbook对象,如果尝试打开磁盘上不存在工作簿,或者尝试将工作簿保存到不存在磁盘上,则Workbook对象捕获错误并显示其自己对话框(如图26-2所示))。...通过要求变量声明,可以避免因变量名拼写错误而导致许多错误。 避免使用Object数据类型和Variant数据类型来包含对象引用

6.7K30

避坑指南:可能导致.NET内存泄露8种行为

原因很简单:订阅事件后,该对象将保留对你引用。除非你使用不捕获类成员匿名方法。...如果可能,请使用匿名函数进行订阅,并且不要捕获任何类成员。 2.在匿名方法捕获类成员 虽然可以很明显地看出事件机制需要引用一个对象,但是引用对象这个事情在匿名方法捕获类成员时却不明显了。...GC会将仍在使用对象推广到更高世代,以使它们保存时间更长。这意味着经常使用对象将在缓存停留更长时间。 5.错误WPF绑定 WPF绑定实际上可能导致内存泄漏。...因为这会告诉WPF不要创建强引用另一个和WPF有关内存泄漏问题会发生在绑定到集合时。如果该集合实现INotifyCollectionChanged接口,则会发生内存泄漏。...实时堆栈包括正在运行线程所有局部变量和调用堆栈成员。 如果出于某种原因,你要创建一个永远运行不执行任何操作并且具有对对象引用线程,那么这将会导致内存泄漏。

11910

17个C++编程常见错误及其解决方案

捕获异常错误示例: 函数内部抛出异常但未被捕获。...正确关闭文件错误示例: 打开文件后在程序结束前忘记关闭,可能导致数据丢失或文件句柄耗尽。...(Resource Acquisition Is Initialization)技术,例如智能指针或C++11引入std::ofstream析构函数自动关闭文件。...全局对象时序和作用域问题错误示例: 在C/C++程序,全局对象初始化顺序由编译器界定,非显式指定,可能导致依赖全局对象组件遭遇初始化时序问题,影响对象状态一致性及程序稳定性。...但依据C++标准,全局对象初始化顺序严格规定,尤其在不同编译器或复杂项目中,可能导致Service使用未完全初始化Database对象,引发预期行为。

11710

事件

事件捕获 事件捕获(event capturing),不太具体节点早接收到事件,而最具体节点最后接收事件。事件捕获用意在于在事件到达预定目标之前捕获它。...在触发DOM上某个事件时,产生一个事件对象event,这个对象包含着所有与事件相关信息。...此时再操作DOM节点或者元素样式就会报错。 其常用于清除引用,以避免内存泄漏!...事件 说明 blur 在元素失去焦点时触发,不会冒泡 focus 在元素获得焦点时触发,不会冒泡 focusin 在元素获得焦点时触发,冒泡 focusout 在元素失去焦点时触发,冒泡 当焦点从页面一个元素移动到另一个元素...事件目标为被插入节点,而event.relatedNode属性值是父节点引用。 接着会在新插入节点上触发DOMNodeInsertIntoDocument事件。

3.2K51

Java异常是Java提供一种识别及响应错误一致性机制

Java通过APIThrowable类众多子类描述各种不同异常。因而,Java异常都是对象,是Throwable子类实例。   ...它主要用于回收在try块里打开物理资源(如数据库连接、网络连接和磁盘文件)。...RuntimeException 类表示由程序错误导致异常,比如若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException...如果出现了运行时异常,那么一定是你问题。这些异常是检查异常,程序可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常发生。   ...也就是说:这种异常特点是Java编译器检查它,当程序可能出现这类异常,要么用try-catch语句捕获它,要么通过throws进行声明抛出,否则编译不会通过。

56500

整理了近期阿里携程面试题,分享给大家(后期会慢慢完善)

)简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈存储; 引用数据类型存储在堆(heap)对象,占据空间大、大小不固定。...如何编写高性能javascript? 那些操作造成内存泄漏? 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 垃圾回收器定期扫描对象,并计算引用了每个对象其他对象数量。...如果一个对象引用数量为 0(没有其他对象引用过该对象),或对该对象惟一引用是循环,那么该对象内存即可回收。 setTimeout 第一个参数使用字符串而非函数的话,引发内存泄漏。...Document 对象是 HTML 文档节点与所有其他节点(元素节点,文本节点,属性节点, 注释节点) Document 对象使我们可以通过脚本对 HTML 页面所有元素进行访问 Document...该DOM上事件如果被触发,执行两次(执行次数等于绑定次数) 如果该DOM是目标元素,则按事件绑定顺序执行,不区分冒泡/捕获 如果该DOM是处于事件流非目标元素,则先执行捕获,后执行冒泡 13.

1.6K21

前端开发不可忽视知识点汇总(二)

window对象是指浏览器打开窗口。document对象是Documentd对象(HTML 文档对象一个只读引用,window对象一个属性。...global 引用复制代码 33. new一个对象过程 1、创建一个空对象,并且 this 变量引用对象,同时还继承了该函数原型。...2、属性和方法被加入到 this 引用对象。 3、新创建对象由 this 所引用,并且最后隐式返回 this 34....我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡。执行几次事件,先执行冒泡还是捕获? 按照W3C标准,先发生捕获事件,后发生冒泡事件。...闭包使用优缺点 优点:1.保护函数内部变量安全,加强了封装性 2.在内存维持一个变量 3.设计私有方法和变量 4.可以读取函数内部变量 缺点:1.导致内存泄漏,使用不当造成额外内存占用 2.

1.7K40

【深入浅出C#】章节 6: 异常处理和调试:异常概念和处理机制

当程序执行到throw语句时,立即终止当前代码块执行,并将指定异常对象抛出到调用堆栈上一级try-catch块,或者如果没有匹配try-catch块,则导致程序崩溃。...System.NullReferenceException: 表示空引用异常,当尝试访问空引用对象成员时抛出。...2.4 捕获异常后果 捕获异常可能导致程序意外终止和不稳定性,具体后果取决于异常类型和发生位置。...以下是捕获异常一些可能后果: 程序崩溃:捕获异常可能导致程序崩溃,终止执行,并在控制台或日志显示错误消息。这会导致用户体验不好,甚至可能造成数据丢失或文件损坏。...丢失数据:在发生异常时,如果没有正确地处理异常,可能导致保存数据丢失。例如,在文件读写操作中发生异常,而未能正确处理,可能导致写入文件内容不完整或损坏。

71340

阿里架构师带你深入浅出jvm

作为多线程应用程序一个示例,某个程序在一个线程上接收用户输入,在另一个线程上执行多种复杂计算,并在第三个线程上更新数据库。 在单线程应用程序,用户可能花费时间等待计算或数据库更新完成。...对于每个方法执行,都会有一个新frame被创建并被入栈到栈顶部。当方法正常返回或在方法执行过程遇到捕获异常时frame会被出栈。...Frame 对于每一个方法执行,一个新frame会被创建并被入栈到栈顶。当方法正常返回或在方法执行过程遇到捕获异常,frame会被出栈。...每个直接引用都被以偏移方式存储,该存储结构关联着变量或方法运行时位置。 线程之间共享 堆 堆某个节点值总是不大于或不小于其父节点值; 堆总是一棵完全二叉树。...下面列出了在该类文件,使用到操作码: aload_0 该操作码是形如aload_格式一组操作码其中一个。它们都是用来加载一个对象引用到操作数栈。

66720

Android 开发艺术探索笔记三

** 当程序有捕获异常,系统自动调用uncaughtException方法,其中thread为出现捕获异常线程,ex为捕获异常,有了这个ex,就可以获取到异常信息了。...采用以上方法,如果越界,Gradle就会在apk打包2个或多个dex文件。 产生问题: 应用启动速度降低。由于应用启动会加载额外dex文件导致启动速度降低。要避免生成较大dex文件。...当宿主调用安装apk,插件凡是以R开头资源无法访问,通过实现Context两个抽象方法来解决资源问题,getAssets()与getResources() Activity生命周期管理。...方法要避免大量操作 onDraw不要创建新局部对象,这是因为onDraw可能会被频繁调用,就会一瞬间产生大量临时对象,不仅占用过多内存,还会导致系统频繁gc,降低程序执行效率 onDraw方法不要做耗时任务...保持一致,导致activity对象无法及时释放 避免属性动画导致内存泄漏。

54010

Swift基础 自动参考计数

Apartment实例,所以它也被分配了: 注意 在使用垃圾收集系统,有时使用弱指针来实现简单缓存机制,因为只有当内存压力触发垃圾收集时,才会释放没有强引用对象。...在ARC所有权模式,一个部门拥有自己课程。Course有两个非自主参考资料,一个是系参考资料,另一个是学生应该参加下一门课程;一门课程不拥有其中任何一个对象。...拥有的引用和隐式解开可选属性 上面弱引用和无名引用示例涵盖了两个更常见场景,在这两个场景,有必要打破强引用周期。...Customer和CreditCard示例显示了一种情况,即一个允许为nil属性和另一个不能为nil属性可能导致强大参考周期。最好通过非自有参考来解决这个问题。...相反,当捕获引用在未来某个时候可能变成nil,将捕获定义为弱引用。弱引用始终是可选类型,当它们引用实例被释放时,它们自动变成nil。这使您能够检查它们是否存在于闭合体

7900

JavaScript(十二)

IE 事件流是 事件冒泡流 Netscape 事件流是 事件捕获流 事件冒泡 IE 事件流叫做事件冒泡(event bubbling),即事件开始时由最具体元素(文档嵌套层次最深那个节点)接收...事件捕获思想是不太具体节点应该更早接收到事件,而最具体节点应该最后接收到事件。事件捕获用意在于在事件到达预定目标之前捕获它。 建议使用事件冒泡,在有特殊需要时再使用事件捕获。...事件对象 ---- 在触发 DOM 上某个事件时,产生一个事件对象 event,这个对象包含着所有与事件有关信息。...在文本插入文本框之前触发 textInput 事件 内存和性能 ---- 在 JavaScript ,添加到页面上事件处理程序数量将直接关系到页面的整体运行性能。 导致这一问题原因是多方面的。...首先,每个函数都是对象,都会占用内存,内存对象越多,性能就越差。其次,必须事先指定所有事件处理程序而导致 DOM 访问次数,延迟整个页面的交互就绪时间。

2.9K20

第5章 | 共享与可变,应对复杂关系

对 aside 赋值移动向量、让 v 回到初始化状态,并将 r 变为悬空指针,如图 5-7 所示。...图 5-7:对已移动出去向量引用 尽管 v 在 r 整个生命周期中都处于作用域内部,但这里问题是 v 值已经移动到别处,导致 v 成了初始化状态,而 r 仍然在引用它。...在 C++ ,std::vector 规范告诫你“重新分配向量缓冲区令指向序列各个元素所有引用、指针和迭代器失效”。...但这么做有充分理由:要为集合设计出“支持不受限制地在迭代期间修改”能力是非常困难,而且往往导致无法简单高效地实现这些集合。...下面是通过上述规则捕获各种错误另一个例子。考虑以下 C++ 代码,它用于管理文件描述符。

8310

C++(STL):03---智能指针之shared_ptr

+1 四、shared_ptr自动销毁对象内存机制 由上面可知,当指向一个对象最后一个shared_ptr对象被销毁时,shared_ptr类自动销毁此对象。...现在可以放心改变对象值了 十、异常处理 当程序发生异常时,我们可以捕获异常来将资源被正确释放。...//此时抛出异常,捕获,函数终止}//shared_ptr仍然自动释放内存 voif func(){int *ip=new int(42);......//此时抛出异常,捕获delete ip; //在退出之前释放内存,此语句没有执行到,导致内存浪费} 十一、重置shared_prt类删除器 概念:前面介绍过,当shared_ptr生命周期结束时,会调用默认析构函数来释放...如果希望使用shared_ptr管理动态数组,必须提供自己定义删除器 如果提供删除器,shared_ptr默认使用delete删除动态数组,此时delete少一个“[]”,因为产生错误 //本例

1.5K20
领券