Javascript中的作用域链与闭包

来源:互联网 发布:html调用外部js文件 编辑:程序博客网 时间:2024/04/27 22:48

Javascript中有两个十分重要的概念–作用域链和闭包。


我是这样理解作用域链的,在一个函数中,函数内部所有可以访问的变量,排成了一个栈,想根据某个变量名访问变量时,就从栈顶开始向下搜索,搜到的第一个就算是找到了。那么,这个栈是怎么排列的呢?栈顶,是函数的内部变量以及arguments,栈顶下面,是包含这个函数的内部变量和arguments,往下依次类推。


闭包又是什么呢?闭包是一个函数,这个函数突破了作用域链,可以访问另一个函数作用域中的变量。下面是一个例子:

function createFunction(name){          return function(){               alert(name); }; }         var printName = createFunction("John");         printName();//John
createFunction()中的匿名函数即是一个闭包。由于createFunction()是返回的匿名函数的父函数,所以匿名函数的作用域链上有createFunction(name)的参数即name,所以可以访问到;createFunction(name)运行完毕后,其活动对象不会被销毁,依然留在内存中,因为它的参数name还在被返回的匿名函数引用着。这样做会带来方便,但是也会多占内存,所以要慎用闭包。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗得犬瘟怎么办 泰迪坐车吐了怎么办 小孩感冒流鼻涕带血怎么办 孩子鼻子流鼻涕有血丝怎么办 鼻子过敏流鼻涕有血丝怎么办 孕妇感冒头痛鼻涕带血怎么办 孕妇感冒鼻塞鼻涕带血怎么办 孕晚期感冒流鼻涕打喷嚏怎么办 孕晚期感冒鼻塞流鼻涕怎么办 怀孕初期鼻涕一直流怎么办 孩子一直流鼻水怎么办 9个月宝宝流鼻涕怎么办 8个月婴儿流鼻涕怎么办 3岁宝宝鼻塞咳嗽怎么办 又感冒又咳嗽了怎么办 鼻塞有一个月了怎么办 感冒一直流清水鼻涕怎么办 孩子受凉流清水鼻涕怎么办 一遇冷空气就打喷嚏流鼻涕怎么办 打喷嚏鼻塞流清鼻涕怎么办 哺乳期鼻子不通气有鼻涕怎么办 宝宝热伤风流清鼻涕怎么办 哺乳期感冒流鼻涕怎么办最有效 小孩睡觉太晚了怎么办 孩子晚上睡觉不安稳怎么办 月子里宝宝睡觉不安稳怎么办 月子宝宝睡觉不安稳怎么办 孩子老是流黄鼻涕怎么办 孕妇流黄鼻涕怎么办速效办法 孕妇感冒流黄鼻涕怎么办 孕妇有黄痰和黄鼻涕怎么办 孕妇感冒了流黄鼻涕怎么办 怀孕感冒了怎么办鼻塞流鼻涕 怀孕初期感冒了怎么办鼻塞流鼻涕 怀孕9个月流鼻涕怎么办 怀孕5个月流鼻涕怎么办 小孩老是流黄鼻涕口臭怎么办 狗狗有食欲流黄鼻涕拉稀怎么办 小孩流黄鼻涕咳嗽怎么办 小狗感冒了一直打喷嚏怎么办 眼干眼屎多模糊怎么办