JS变量及其作用域

 更新时间:2017年03月29日 14:54:30   作者:liujian_laohan  
本文主要介绍了JS变量及其作用域的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧

1、 变量及其作用域:变量分为“全局变量”和“局部变量”,“全局变量”申明在函数外部,可供所有函数使用,而“局部变量”申明在函数体内部,只能在定义该变量的函数体内使用。

(备注:在申明变量时没有var关键字,而是直接赋值的变量均为全局变量)

<script type="text/javascript">
  function main() {  
    n = 10;//这里的n为全局变量,可以被外部直接使用
  }
  main();
  alert(n);
</script>

2、 在函数体内,局部变量的优先级高于全局变量。

<script type="text/javascript">
  //网上看到的我认为很有代表性的一个例子,在函数体外部和内部都申明了相同名字的变量,变量的作用域问题,例子如下:
  var n = 1;
  function test() {
    alert(n); //这里的a并不是全局变量,原因是函数体第四行申明了一个相同重名的局部变
         //量a,如果把第四行a的申明注释掉,那么这里的a显示1,为全局变量。所以得
         //出结论:全局变量a被局部变量a覆盖了。
         //说明了JS函数在test()在执行前,函数体内的变量a都指向了局部变量,但本
         //行输出的a在执行过程中还没有被赋值,所以显示undefined。
    n = 2;
    alert(n);
    var n; //本行申明局部变量a
    alert(n);
  }
    test();
    alert(n);
</script>

按照我的理解,上面例子最后输出的答案应该是:1 2 2 1;但是正确的答案是:undefined 2 2 1; 原因就是函数体外部和内部都申明了相同名字的变量时,局部变量覆盖了全局变量。

3、 外部怎么读取函数体内部的局部变量呢?

一般来说,只有函数体内部可以直接得到外部的全局变量,但是外部要得到函数体内部的局部变量是不行的。但是,通过在函数体内部再定义一个函数返回局部变量,再从外部调用函数就能实现了。

<script type="text/javascript">
  function f1() {    
    var n = 10;    
    function f2() {//在f1()内部再定义f2(),通过f2()访问f1()中的局部变量      
      alert(n);    
    }    
    return f2;//返回f1()局部变量n
  }  
  var result = f1(); //在外部调用f1()函数,就能获取局部变量n的值
  result(); // 10,即为n的值
</script>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • 分析javascript原型及原型链

    分析javascript原型及原型链

    本篇文章给大家详细分析了javascript原型及原型链的相关知识点以及用法分享,有兴趣的朋友参考下。
    2018-03-03
  • JavaScript自定义Promise实现流程

    JavaScript自定义Promise实现流程

    现在网上有非常多的Promise文章,但都是给你一堆代码,或者某些核心代码,让你看完之后感觉,嗯,很厉害,但还是不知所云,不知其所以然。那么本文真正从一个小白开始带你深入浅出,一步一步实现自己的 Promise,这种自己造轮子的过程一定是进步最快的过程,快上车开始吧
    2022-10-10
  • 微信小程序自定义组件封装及父子间组件传值的方法

    微信小程序自定义组件封装及父子间组件传值的方法

    这篇文章主要介绍了微信小程序自定义组件封装及父子间组件传值的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JavaScript JSON数据处理全集(小结)

    JavaScript JSON数据处理全集(小结)

    这篇文章主要介绍了JavaScript JSON数据处理全集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • uniapp解决软键盘弹出问题方法详解

    uniapp解决软键盘弹出问题方法详解

    这篇文章主要为大家介绍了uniapp解决软键盘弹出问题方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • uni-app微信小程序下拉多选框实例代码

    uni-app微信小程序下拉多选框实例代码

    这篇文章主要给大家介绍了关于uni-app微信小程序下拉多选框的相关资料,在通过uniapp做app开发的时候,有场景需要用到下拉选择框,需要的朋友可以参考下
    2023-08-08
  • Webstorm2016使用技巧(SVN插件使用)

    Webstorm2016使用技巧(SVN插件使用)

    这篇文章主要介绍了Webstorm2016使用技巧(SVN插件使用),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Openlayers3实现车辆轨迹回放功能

    Openlayers3实现车辆轨迹回放功能

    这篇文章主要介绍了Openlayers3实现车辆轨迹回放功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • Google 爬虫如何抓取 JavaScript 的内容

    Google 爬虫如何抓取 JavaScript 的内容

    我们测试了谷歌爬虫是如何抓取 JavaScript,下面就是我们从中学习到的知识,需要的朋友可以参考下
    2017-04-04
  • js 获取浏览器高度和宽度值(多浏览器)

    js 获取浏览器高度和宽度值(多浏览器)

    js获取浏览器高度和宽度值,尽量的考虑了多浏览器。
    2009-09-09

最新评论