<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hello World]]></title><description><![CDATA[欲买桂花同载酒]]></description><link>https://blog.youkuaiyun.com/Anpoly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Anpoly]]></copyright><item><title><![CDATA[深入理解JavaScript闭包]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80296349</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80296349</guid><author>Anpoly</author><pubDate>Sun, 13 May 2018 19:23:26 +0800</pubDate><description><![CDATA[定义

闭包的定义：


  闭包是指那些能访问自由变量的函数。


自由变量：


  自由变量是指在函数中使用的，但既不是函数参数也不是函数的局部变量的变量。


所以我们可以理解为闭包是由 函数 + 自由变量 组成的。

换句话说，闭包就是函数和被创建的函数中的作用域对象的组合。

所以在理论上所有JavaScript函数都是闭包。

我们看一下实践中闭包的定义：


即使创建它的上下文已经...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript执行上下文]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80286726</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80286726</guid><author>Anpoly</author><pubDate>Sat, 12 May 2018 15:22:17 +0800</pubDate><description><![CDATA[在《深入理解JavaScript执行上下文栈》这篇文章中，我们已经介绍了执行上下文相关概念：

执行上下文

分类：全局上下文、函数上下文 

全局上下文：执行全局代码时，创建全局上下文。  
函数上下文：执行函数时，创建函数上下文。 

主要属性：


变量对象（Variable object，VO）
作用域链（Scope chain）
this


这一篇我们将介绍执行上下文的具体处理过程。
...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript原型与原型链]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80219739</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80219739</guid><author>Anpoly</author><pubDate>Mon, 07 May 2018 01:37:24 +0800</pubDate><description><![CDATA[构造函数与对象

我们先使用构造函数创建对象：



function Person() {}
var person = new Person()

在上面的例子中，Person就是一个构造函数，使用new创建了一个实例对象person。

当然除了上面示例所示创建实例对象外，也可以使用JavaScript的内置对象（Object、Array、Date等需要new来创建实例对象的内部对象）创建一个...]]></description><category></category></item><item><title><![CDATA[面试经典之快速排序]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80161295</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80161295</guid><author>Anpoly</author><pubDate>Wed, 02 May 2018 00:54:55 +0800</pubDate><description><![CDATA[快速排序是前端面试中经常被问到的一个问题，这里我们借用阮一峰老师的快速排序思想《快速排序（Quicksort）的Javascript实现》



原理


在数据集之中，选择一个元素作为“基准”。
所有小于“基准”的元素，都移到“基准”的左边；所有大于“基准”的元素，都移到“基准”的右边。
对“基准”左边和右边的两个子集，不断重复第一步和第二步，直到所有子集只剩下一个元素为止。




过程

以...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript作用域链]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80137650</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80137650</guid><author>Anpoly</author><pubDate>Sat, 28 Apr 2018 18:28:13 +0800</pubDate><description><![CDATA[在《深入理解JavaScript执行上下文栈》这篇文章中，我们已经介绍了执行上下文相关概念：

执行上下文

分类：全局上下文、函数上下文 

全局上下文：执行全局代码时，创建全局上下文。  
函数上下文：执行函数时，创建函数上下文。 

主要属性：


变量对象（Variable object，VO）
作用域链（Scope chain）
this


这一章节我们主要针对执行上下文中的作用域链进...]]></description><category></category></item><item><title><![CDATA[面试经典之深浅拷贝与克隆函数]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80114816</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80114816</guid><author>Anpoly</author><pubDate>Sat, 28 Apr 2018 01:07:02 +0800</pubDate><description><![CDATA[面试中经常会被问到克隆函数的实现，这篇文章我们就介绍一下克隆函数简单实现以及 
JavaScript中的深浅拷贝。

首先我们先来了解一下JavaScript中的深浅拷贝：



数组拷贝

为了更全面了解数组的拷贝，希望大家不要吐槽接下来我们举例使用的神奇数组：



var source = [1, null, undefined, {name: 'anjou', age: undefined...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript变量对象]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80064794</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80064794</guid><author>Anpoly</author><pubDate>Tue, 24 Apr 2018 15:38:29 +0800</pubDate><description><![CDATA[在上一篇《深入理解JavaScript执行上下文栈》，我们已经介绍了执行上下文相关概念：



执行上下文

分类：全局上下文、函数上下文 

全局上下文：执行全局代码时，创建全局上下文。  
函数上下文：执行函数时，创建函数上下文。 

主要属性：


变量对象（Variable object，VO）
作用域链（Scope chain）
this


这一章节我们主要针对执行上下文中的变量对象进...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript执行上下文栈]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80058412</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80058412</guid><author>Anpoly</author><pubDate>Tue, 24 Apr 2018 00:49:20 +0800</pubDate><description><![CDATA[执行顺序

在上一篇关于声明提升的文章中我们可以了解到，js执行代码时并不是直观的顺序执行。



function a() {
    console.log('a0')
}
a()  //a1
function a() {
    console.log('a1')
}
a()  //a1


这是因为JavaScript并不是一行一行的解析和执行程序，而是一段一段的解析执行。当执行每一段代码...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript声明提升]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/80034756</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/80034756</guid><author>Anpoly</author><pubDate>Sun, 22 Apr 2018 01:09:31 +0800</pubDate><description><![CDATA[JavaScript中的变量声明提升

我们先来看一段代码



console.log(a)  //undefined
var a = 1

上面这两行代码不难理解， var定义的变量声明都会被提升至本作用域的顶部。所以上面的两行代码等价于下面的三行代码。



var a
console.log(a)
a = 1

再来看



console.log(a)  //报错
a = 1

前面已经...]]></description><category></category></item><item><title><![CDATA[面试经典之浏览器渲染流程]]></title><link>https://blog.youkuaiyun.com/Anpoly/article/details/79952644</link><guid>https://blog.youkuaiyun.com/Anpoly/article/details/79952644</guid><author>Anpoly</author><pubDate>Tue, 17 Apr 2018 01:26:44 +0800</pubDate><description><![CDATA[由于浏览器的加载、解析、渲染是一个较为复杂的过程，本文将这三部分拆解开来，仅对浏览器渲染部分进行讲解。如有错误，欢迎指正。1.第一阶段：构建DOM树1.进入正题，当网页输入URL时候，浏览器调用相应的资源加载器。2.加载器依赖网页模块建立连接，发起请求并接受回复。3.浏览器接收到各种网页或者资源的数据，其中某些资源可能是同步的也可能是异步的。4.网页被加载给html解释器变为一系列的词语（toke...]]></description><category></category></item></channel></rss>