javascript嵌套函数和在函数内调用外部函数的区别分析

 更新时间:2016年01月31日 22:01:38   投稿:mdxy-dxy  
这篇文章主要介绍了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所以就会报错。

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

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

相关文章

  • 自适应方案postcss-pxtorem使用步骤

    自适应方案postcss-pxtorem使用步骤

    这篇文章主要介绍了如何使用postcss-pxtorem插件将px单位转换为rem单位,包括安装插件、创建配置文件和引入脚本的步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • uniapp开发小程序的经验总结

    uniapp开发小程序的经验总结

    这篇文章主要给大家介绍了关于uniapp开发小程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • JavaScript实现滑块验证解锁

    JavaScript实现滑块验证解锁

    这篇文章主要为大家详细介绍了JavaScript实现滑块验证解锁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 页面载入结束自动调用js函数示例

    页面载入结束自动调用js函数示例

    当页面加载完成后自动调用预先编好的js函数,在某些特殊情况下还是比较实用的,具体实现如下,感兴趣的朋友可以参考下
    2013-09-09
  • JS 对java返回的json格式的数据处理方法

    JS 对java返回的json格式的数据处理方法

    下面小编就为大家带来一篇JS 对java返回的json格式的数据处理方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • JavaScript split()方法定义及更多实例

    JavaScript split()方法定义及更多实例

    这篇文章主要给大家介绍了关于JavaScript split()方法定义及更多实例的相关资料,js里的split()方法大家都知道用于将字符串转化为字符串数组,文中通过代码实例介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • js静态方法与实例方法分析

    js静态方法与实例方法分析

    js静态方法与实例方法分析,需要的朋友可以参考下。
    2011-07-07
  • JS pushlet XMLAdapter适配器用法案例解析

    JS pushlet XMLAdapter适配器用法案例解析

    这篇文章主要介绍了JS pushlet XMLAdapter适配器用法案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 基于RequireJS和JQuery的模块化编程日常问题解析

    基于RequireJS和JQuery的模块化编程日常问题解析

    本文是小编日常收集整理些有关RequireJS和JQuery的模块化编程,感兴趣的朋友一起学习吧
    2016-04-04
  • 跟我学习javascript的循环

    跟我学习javascript的循环

    跟我学习javascript的循环,本文不仅针对javascript循环进行讲解,还对prototype补充了几点小tips,欢迎大家阅读。
    2015-11-11

最新评论