JavaScript深入之重新认识箭头函数的this

前端 

我们知道this绑定规则一共有5种情况:默认绑定(严格/非严格模式)隐式绑定显式绑定new绑定箭头函数绑定其实大部分情况下可以用一句话来概括,this总是指向调用该函数的对象。但是对于箭头函数并不是这样,是根据外层(函数或者全局)作用域(词法作用域)来决定this。对于箭头函数的this总结如下:箭

JavaScript深入之闭包面试题解

前端 

JavaScript深入之从作用域链理解闭包

前端 

深入浅出图解作用域链和闭包

前端 

红宝书(p178)上对于闭包的定义:闭包是指有权访问另外一个函数作用域中的变量的函数 关键在于下面两点:是一个函数能访问另外一个函数作用域中的变量对于闭包有下面三个特性:闭包可以访问当前函数以外的变量function getOuter(){ var date = '815'; f

JavaScript深入之4类常见内存泄漏及如何避免

前端 

垃圾回收算法常用垃圾回收算法叫做标记清除 (Mark-and-sweep) ,算法由以下几步组成:垃圾回收器创建了一个“roots”列表。roots 通常是代码中全局变量的引用。JavaScript 中,“window” 对象是一个全局变量,被当作 root 。window 对象总是存在,因此垃圾回

JavaScript深入之带你走进内存机制

前端 

JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量,堆存放复杂对象,池存放常量,所以也叫常量池。昨天文章介绍了堆和栈,小结一下:基本类型:–> 栈内存(不包含闭包中的变量)引用类型:–> 堆内存今日补充一个知识点,就是闭包中的变量并不保存中栈内存

JavaScript深入之内存空间详细图解

前端 

堆栈的内容和执行顺序我就不说了,前面两篇已经介绍过了。但是今天补充一个知识点:某些情况下,调用堆栈中函数调用的数量超出了调用堆栈的实际大小,浏览器会抛出一个错误终止运行。对于下面的递归就会无限制的执行下去,直到超出调用堆栈的实际大小,这个是浏览器定义的。function foo() { foo

JavaScript深入之执行上下文栈和变量对象

前端 

JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。翠花,上代码例子一:变量提升foo; // undefinedvar foo = function () { console.log('