javascript执行上下文、作用域与闭包(第二篇)---作用域
来源:互联网 发布:明源软件北京分公司 编辑:程序博客网 时间:2024/05/17 23:35
首先,提到作用域,要了解一个常识:
javascript中没有块级作用域,只有函数作用域和全局作用域。
什么是块级作用域?块级作用域就是定义在{}之内的范围,比如if(){}或者for(){}里那个{}里的范围就叫做块级作用域。
如:if(){}
if(0 < 2) { var name = "jeri"; } alert(name);//jeri,
for(){}
for(var i=0;i<9;i++){}alert(i);//9
我们在编写代码的时候,不要在“块”里面声明变量,要在“块”开始的地方就声明好,以免出现错误,如:
var i;for(i=0;i<9;i++){}alert(i);//9
所以,在声明变量时,我们要做到,全局变量要在代码前端声明,函数中的变量要在函数体一开始的地方就声明好。除了这两个地方,其他地方都不要出现变量声明。
下面来说作用域,简单的说,作用域相当于一个区域,就是为了说明这个区域有多大,而不包括这个区域里有什么东西。这个区域里有什么东西恰恰就是这个作用域所对应的执行上下文所要说明的东西。如:
作用域有上下级的关系,上下级关系的确定就看函数是在哪个作用域下创建的。例如,fn作用域下创建了bar函数,那么“fn作用域”就是“bar作用域”的上级。(也可以说父子关系)
我们知道,作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
另外,我们还需牢记于心的是,作用域是在函数创建的时候就已经确定了,而不是函数调用的时候。
函数创建和函数调用可是两个不同的概念,函数创建就是定义一个函数,函数调用是在某处调用一个已经定义好的函数。下面举一个例子来说明:
function foo() //函数创建,定义了foo函数,而foo函数的作用域也在此时确定了{ alert("buddy!");}alert("hey!");foo();//调用函数,这里调用foo函数
作用域的概念很好理解,到这就结束了,下一篇将会讲作用域链与自由变量。
下一篇: javascript执行上下文、作用域与闭包(第三篇)—自由变量与作用域链
本文参考了王福朋老师的深入理解javascript原型和闭包(13)
阅读全文
0 0
- javascript执行上下文、作用域与闭包(第二篇)---作用域
- javascript执行上下文、作用域与闭包(第四篇)---作用域与执行上下文
- javascript执行上下文、作用域与闭包(第一篇)---执行上下文
- javascript执行上下文、作用域与闭包(第六篇)---闭包
- javascript执行上下文、作用域与闭包(第三篇)---自由变量与作用域链
- javascript执行上下文、作用域与闭包(第五篇)---一个例子的理解
- javascript执行上下文、作用域与闭包(第七篇)---关于闭包典型例子的理解
- JavaScript作用域、上下文、执行期上下文、作用域链、闭包
- js函数、作用域、闭包、执行上下文
- 深入理解javascript(13):作用域和执行上下文
- 图解Javascript上下文与作用域
- 图解Javascript上下文与作用域
- 图解Javascript上下文与作用域
- 图解Javascript上下文与作用域
- js笔记---作用域(执行上下文[execution context],活动对象) 闭包
- js笔记---作用域(执行上下文[execution context],活动对象) 闭包
- JavaScript核心:对象 原型链 构造函数 执行上下文栈 执行上下文 变量对象 活动对象 作用域链 闭包 This 总结
- 作用域、上下文、闭包、原型、继承
- Python入门
- java学习笔记
- ios学习笔记6--plist文件生成与读取
- 算法设计周记(六)--Summary Ranges
- 【资源共享】《Rockchip SDMMC SDIO eMMC 开发指南》
- javascript执行上下文、作用域与闭包(第二篇)---作用域
- 机器学习-降维
- MVVM KVO 购物车 (一处计算总价钱)
- MySQL之DML语句(下)
- java并发包之倒计数闭锁CountDownLatch
- Uinx 时间戳的转换
- JVM学习笔记(1)----Java类的加载机制
- 【java】微信文章抓取
- Linux防火墙(iptables)的开启与关闭