手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript嵌套函数和在函数内调用外部函数的区别分析
javascript嵌套函数和在函数内调用外部函数的区别分析
摘要:我们都知道在函数中定义的局部变量在声明他的函数体以及其嵌套的函数内始终是有定义的,并且在函数的作用域链上始终会有个对象指向全局对象,使函数能...

我们都知道在函数中定义的局部变量在声明他的函数体以及其嵌套的函数内始终是有定义的,并且在函数的作用域链上始终会有个对象指向全局对象,使函数能够访问到全局变量。

var ga = 'global'; var func = function() { var la = 'local'; return function() { return function() { return function() { alert(la);alert(ga); } } } } a = func(); a()()();// 弹出 local 和 global

那么在外部定义的函数A, 被函数B在函数体内调用时,A能访问到B中定义的局部变量吗?答案是否定的,把上面的例子稍作修改如下

var ga = 'global'; function repeat() { alert(la); } var func = function() { var la = 'local'; alert(1); repeat(); alert(2); }; func();

上面的运行结果是只弹出了1,在调用repeat的时候,因为访问了未定义变量js解释器就报错把程序中断了。

原因是函数在定义时保存了一个作用域链,repeat函数在外部定义,在他的作用域中并没有一个局部变量叫la,继续在全局作用域查找也没找到la所以就会报错。

所以嵌套函数和在函数内嵌套调用外部函数还是有很大区别的。

昨天在回答一个问题/article/78958.htm时引发的思考,虽然概念我明白,但是当时一直想在函数内部调用的repeat为什么访问不到调用他的函数的局部变量,今天又翻了下参考资料自己用代码测试了一遍。希望这篇文章能帮助到有同样困惑的朋友。

【javascript嵌套函数和在函数内调用外部函数的区别分析】相关文章:

javascript带回调函数的异步脚本载入方法实例分析

浅析Javascript匿名函数与自执行函数

javaScript中slice函数用法实例分析

JavaScript中的函数嵌套使用

JavaScript中的this,call,apply使用及区别详解

javascript清空table表格的方法

javascript转换静态图片,增加粒子动画效果

javascript无刷新评论实现方法

JavaScript模版引擎的基本实现方法浅析

javascript实现动态改变层大小的方法

精品推荐
分类导航