以此文作为自己学习的一个总结。

关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量。

一、局部变量和全局变量重名会覆盖全局变量

1 var a = 1;
2 function test1() {
3   var a = 2;
4   alert(a);
5 }
6 test1();// 2  

这里的函数中的定义的a是局部变量,它的作用域为函数{}之间,函数外定义的a为全局变量,它的作用域为整个程序(描述有点不准确)。在函数中的局部变量和全局变量重名,局部变量会覆盖全局变量。

二、提到全局变量与局部变量不得不说明的一个知识点就是变量提升(这是一个坑)。‘与C/C++逐行执行代码不同,JS引擎的工作方式是,先获取所有被声明的变量再逐一执行,所有变量的声明语句都会被提升到当前代码块的头部’。注:代码块指的是function的一个{},通常的if、while、for的{}中变量不会提升。

了解了变量提升了之后我们用以下代码来演示:

1 var a = 1;
2 function test1() {
3     alert(a);
4     var a = 2;
5     alert(a);
6 }
7 test1();
8 alert(a);//undefined  2  1

为什么结果不是1  2  1呢?原因就在于代码提升。由于代码提升的效果所以实际执行的代码是这样的:

1 var a = 1;
2 function test1() {
3    var a;//局部变量与全局变量重名时会覆盖全局变量,此时的a只有声明却未定义
4     alert(a);//所以执行alert值为undefined
5     a = 2;
6     alert(a);
7 }
8 test1();
9 alert(a);//undefined  2  

转载于:https://www.cnblogs.com/wind-lanyan/p/wind-lanyan.html

Javascript之全局变量和局部变量部分讲解相关推荐

  1. javascript闭包-全局变量与局部变量

    1.function f1(){var n = 888; alert(n);} alert(n); f1(); 结果 运行不过去,控制台打印 n is defined; 2.function f1() ...

  2. 认清JavaScript和JAVA全局变量和局部变量的作用域

    认清JavaScript和JAVA全局变量和局部变量的作用域 2010年2月28日 george 发表评论 阅读评论 通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域 注意 ...

  3. Javascript:谈谈JS的全局变量跟局部变量

    <script>var a =1;function test(){alert(a);var a = 2;alert(a);}test();alert(a);</script> ...

  4. Javascript:谈谈JS的全局变量跟局部变量(转zyz511919766)

    今天公司一个实习小妹子问我两段JS代码的区别: <script type="text/javascript">var a = "Hello";fun ...

  5. 搞懂JavaScript全局变量与局部变量,看这篇文章就够了

    目录 1.什么是全局变量和局部变量 2.全局变量和局部变量的声明 2.1 全局变量的声明 2.2 局部变量的声明 3.全局变量和局部变量一些常见问题 3.1全局变量跟局部变量重名 3.2 零散变量的问 ...

  6. 10.前端JavaScript之【函数】【全局变量与局部变量】

    目录 1.函数 2.函数的全局变量与局部变量 1.函数 1.定义(1)在python定义函数需要用到关键字def在js中定义函数需要用到关键字function(2)格式:function 函数名(形参 ...

  7. 自动变量,非自动变量,全局变量与局部变量

    自动变量,就是普通的局部变量相对于静态变量而言的  非自动变量有两种,一种是全局变量,一种是静态变量(不被释放)2.全局变量和static变量一样只初始化一次,用static定义的全局变量不能被外部文 ...

  8. c语言建立全局变量,C语言全局变量和局部变量

    引子--- 变量可以在程序中三个地方说明: 函数内部.函数的参数定义中或所有的函数外部.根据所定义位置的不同, 变量可分为局部变量.形式参数和全程变量.从空间角度来看,变量可以分为全局变量和局部变量, ...

  9. python中全局变量和局部变量的区别_Python全局变量与局部变量区别及用法分析

    本文实例讲述了Python全局变量与局部变量区别及用法.分享给大家供大家参考,具体如下: 对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白两者的区别了. 定义: 全局变 ...

最新文章

  1. 一夜间,中英同时发布新冠疫苗临床试验结果:均可引起免疫反应,同时登上《柳叶刀》...
  2. pygame 笔记-8 背景音乐子弹音效
  3. iOS 加密的3种方法
  4. linux grep 详细深入学习
  5. CentOS7中使用PM2设置Node-RED开机自启动
  6. python综合练习1-- 用户登录
  7. mysql 外键(foreign key)的详解和实例_MySQL数据库外键
  8. uni-app实现上传多张照片
  9. CentOS ASP.NET Core Runtime Jexus跨平台布署
  10. 点讯输入法S60数字键通用版V6.0(官方签名正式版)
  11. 不能因技术后天的死 而迷茫了今天的“学” 生
  12. java eight,Java语法基础学习DayEight
  13. [leetcode] 140. 单词拆分 II
  14. 《穿越计算机的迷雾》读书笔记五
  15. 使用Excel和matplotlib绘制3D折线图
  16. python识别字母代码_【Python-Opencv】KNN英文字母识别
  17. eclipse中JSP文件编写乱码问题及解决方案
  18. 生活随记-公平和本分
  19. 2023届暑期实习华为面试手撕题
  20. POJO、JavaBean、EJB的区别

热门文章

  1. PAT_B_1039_Java(20分)
  2. 实验7-3-7 字符转换 (15分)
  3. linux音量模块,Linux下的音量控制器alsamixer
  4. java package报错_Java从入门到精通(一)
  5. 【算法竞赛学习】资金流入流出预测-挑战Baseline_特征工程
  6. win7下创建逻辑分区
  7. 复制 和 粘帖 的方法(特别在linux中),备忘
  8. python3(八)sys模块
  9. ann人工神经网络_深度学习-人工神经网络(ANN)
  10. 上半年银行罚单不断,7月越早贷款越有利