JavaScript学习随笔--函数作用域
来源:互联网 发布:搭建java运行环境分析 编辑:程序博客网 时间:2024/06/08 07:57
JavaScript中函数的作用域
首先我们需要弄清楚什么是函数作用域,看下面的代码:
var vg= "vg";function f1(){ var vf1= "vf1"; return { f2:function(){ var vf2= "vf2"; console.log(vg+vf1+vf2); } };}var o = f1();o.f2();//print vgvf1vf2
所谓函数作用域就是函数可以访问的变量集合(不包括this和arguments),在这些可访问变量中又可以分成3类:1)全局变量,定义在全局域中(不在任何函数体中定义的变量都是全局变量)所有函数都可以访问,如本例中的vg。2)局部变量,定义在函数内只有函数本身可以访问的变量,如本例中vf1是f1的局部变量,vf2是f2的局部变量。3)闭包变量,函数的外部函数的所有局部变量,如本例中的vf1就是f2函数的闭包变量。闭包变量可以被所有的嵌套函数访问。函数每次调用时都会生成新的局部变量,但是闭包变量只在外部函数调用时生成一次。
接下来我将演示如何在chrome中debug这段代码,以便于我们能更直观更深入的了解JavaScript中的函数作用域的概念。步骤如下:
1. 新建一个html文件test.html,内容如下:
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script> var vg= "vg"; function f1(){ var vf1= "vf1"; return { f2:function(){ var vf2= "vf2"; console.log(vg+vf1+vf2); } }; } var o = f1(); o.f2(); </script></head><body></body></html>
- 用chrome打开test.html,按shift+ctrl+i调出开发者工具框,在html的第13行打上断点。如图:
3.刷新浏览器,那么chrome将会停在13行,这时我们可以看到函数f2的执行期的所有信息。如下图:
4.在debug窗口的右边栏,我们可以看到函数f2的Call Stack,Scope,Call Stack就是函数的执行顺序,Scope就是函数的作用域,图中我们可以清楚的看到f2的scope中包含3个对象,分别是Local,Closure,Global。 Local就是局部变量,Closure就是闭包变量,Global就是全局变量。
0 0
- JavaScript学习随笔--函数作用域
- JavaScript 学习笔记 五 函数作用域
- JavaScript学习笔记(函数与作用域)
- JavaScript学习随笔--函数执行上下文
- javascript函数作用域
- javascript函数作用域
- JavaScript函数作用域
- JavaScript--函数作用域
- JavaScript函数作用域
- javascript函数作用域
- javascript学习笔记(3):函数与作用域
- 【JavaScript学习】函数表达式:模仿块级作用域
- Javascript 函数及作用域
- JavaScript函数与作用域
- JavaScript的函数作用域
- JavaScript 中的函数作用域
- javascript 函数作用域 详解
- javaScript学习随笔
- 2,ActiveMQ-Queues点对点消息-Receive+Listener方式
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- 银联支付集成文档
- Read from socket failed: Connection reset by peer
- JavaScript学习随笔--函数作用域
- Java数据类型和MySql数据类型对应一览
- JSP-Session简单总结-附带小案例
- 单片机XTAL引脚引出的晶振分析
- 贪心算法
- Windows下Sublime Text 默认打开方式问题解决办法
- 每天吃一根香蕉以及服用几颗止痛药阿纳辛
- 火狐快捷键大全
- MANIFEST.MF