javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释原型的三角关系 概念 上图中的复杂关系,实际上来源就两行代码 ...
分类:
编程语言 时间:
2016-07-31 19:09:16
阅读次数:
215
javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释原型的三角关系 概念 上图中的复杂关系,实际上来源就两行代码 ...
分类:
其他好文 时间:
2016-07-31 19:04:21
阅读次数:
160
javascript高级程序设计书中写到,当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。 作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量则来自下一个... ...
分类:
其他好文 时间:
2016-07-31 13:00:06
阅读次数:
143
× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细 ...
分类:
其他好文 时间:
2016-07-30 22:34:18
阅读次数:
273
闭包是指有权访问另一个函数作用域中的变量的函数。 创建闭包的常见方法:在一个函数内部创建另一个函数。 对彻底理解闭包,需要知道如何创建作用域链以及作用域链有什么作用的细节。 功能: (下次再补充) ...
分类:
Web程序 时间:
2016-07-24 01:44:50
阅读次数:
158
首先介绍下Javascript的函数作用域的概念,然后了解下什么是作用域和声明提前,最后通过一个例子剖析Javascript的作用域链。 1.变量的作用域 稍微有些编程背景的都知道,变量的作用域分为两种: 全局变量 和 局部变量 。 Javascript是一门 弱类型语言 。所有的变量声明都是通过v ...
分类:
Web程序 时间:
2016-07-20 23:03:15
阅读次数:
263
函数声明和函数表达式区别 函数声明是通过 function 函数名(){}来声明一个函数 函数表达式是通过声明一个变量,然后赋值函数。 两者区别是,在程序执行前,会先获取函数声明声明的函数,获取变量的声明,这里变量的声明只是先开辟一个空间,然后给了个名字,之后到该变量名赋值的时候,才有值,也就是说, ...
分类:
编程语言 时间:
2016-07-19 18:27:20
阅读次数:
144
1. 作用域 1.1 作用域 代码1 代码2:函数 代码3: 代码4: 代码5: 代码6: 代码7: PS:本质上看代码是否执行 1.2 小结 Python中无块级作用域 Python中以函数为作用域 Python作用域链,由内向外找,直到找不到报错 Python的作用域在执行之前已经确定 1.3 ...
分类:
其他好文 时间:
2016-07-16 06:41:26
阅读次数:
195
先解释一下什么是“自由变量”。 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图 如上程序中,在调用fn()函数时,函数体中第6行。取b的值就直接可以在fn作用域中取,因为b就是在这里定义的。而取x的值时,就需要到另一个作用域中 ...
分类:
编程语言 时间:
2016-07-14 15:08:38
阅读次数:
114
闭包的三种经典用法: 1. 通过在函数中创建函数,并返回来延迟作用域链的存在时间(掌握执行环境/作用域链/this/活动对象/arguments/全局对象概念的理解) 2. 模仿块级作用域 (javascript不存在块级作用域) for(var i=0;i<10;i++){ alert(i); } ...
分类:
其他好文 时间:
2016-07-12 21:04:06
阅读次数:
155