Javascript之全局变量和局部变量部分讲解
以此文作为自己学习的一个总结。
关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量。
一、局部变量和全局变量重名会覆盖全局变量
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之全局变量和局部变量部分讲解相关推荐
- javascript闭包-全局变量与局部变量
1.function f1(){var n = 888; alert(n);} alert(n); f1(); 结果 运行不过去,控制台打印 n is defined; 2.function f1() ...
- 认清JavaScript和JAVA全局变量和局部变量的作用域
认清JavaScript和JAVA全局变量和局部变量的作用域 2010年2月28日 george 发表评论 阅读评论 通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域 注意 ...
- Javascript:谈谈JS的全局变量跟局部变量
<script>var a =1;function test(){alert(a);var a = 2;alert(a);}test();alert(a);</script> ...
- Javascript:谈谈JS的全局变量跟局部变量(转zyz511919766)
今天公司一个实习小妹子问我两段JS代码的区别: <script type="text/javascript">var a = "Hello";fun ...
- 搞懂JavaScript全局变量与局部变量,看这篇文章就够了
目录 1.什么是全局变量和局部变量 2.全局变量和局部变量的声明 2.1 全局变量的声明 2.2 局部变量的声明 3.全局变量和局部变量一些常见问题 3.1全局变量跟局部变量重名 3.2 零散变量的问 ...
- 10.前端JavaScript之【函数】【全局变量与局部变量】
目录 1.函数 2.函数的全局变量与局部变量 1.函数 1.定义(1)在python定义函数需要用到关键字def在js中定义函数需要用到关键字function(2)格式:function 函数名(形参 ...
- 自动变量,非自动变量,全局变量与局部变量
自动变量,就是普通的局部变量相对于静态变量而言的 非自动变量有两种,一种是全局变量,一种是静态变量(不被释放)2.全局变量和static变量一样只初始化一次,用static定义的全局变量不能被外部文 ...
- c语言建立全局变量,C语言全局变量和局部变量
引子--- 变量可以在程序中三个地方说明: 函数内部.函数的参数定义中或所有的函数外部.根据所定义位置的不同, 变量可分为局部变量.形式参数和全程变量.从空间角度来看,变量可以分为全局变量和局部变量, ...
- python中全局变量和局部变量的区别_Python全局变量与局部变量区别及用法分析
本文实例讲述了Python全局变量与局部变量区别及用法.分享给大家供大家参考,具体如下: 对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白两者的区别了. 定义: 全局变 ...
最新文章
- 一夜间,中英同时发布新冠疫苗临床试验结果:均可引起免疫反应,同时登上《柳叶刀》...
- pygame 笔记-8 背景音乐子弹音效
- iOS 加密的3种方法
- linux grep 详细深入学习
- CentOS7中使用PM2设置Node-RED开机自启动
- python综合练习1-- 用户登录
- mysql 外键(foreign key)的详解和实例_MySQL数据库外键
- uni-app实现上传多张照片
- CentOS ASP.NET Core Runtime Jexus跨平台布署
- 点讯输入法S60数字键通用版V6.0(官方签名正式版)
- 不能因技术后天的死 而迷茫了今天的“学” 生
- java eight,Java语法基础学习DayEight
- [leetcode] 140. 单词拆分 II
- 《穿越计算机的迷雾》读书笔记五
- 使用Excel和matplotlib绘制3D折线图
- python识别字母代码_【Python-Opencv】KNN英文字母识别
- eclipse中JSP文件编写乱码问题及解决方案
- 生活随记-公平和本分
- 2023届暑期实习华为面试手撕题
- POJO、JavaBean、EJB的区别
热门文章
- PAT_B_1039_Java(20分)
- 实验7-3-7 字符转换 (15分)
- linux音量模块,Linux下的音量控制器alsamixer
- java package报错_Java从入门到精通(一)
- 【算法竞赛学习】资金流入流出预测-挑战Baseline_特征工程
- win7下创建逻辑分区
- 复制 和 粘帖 的方法(特别在linux中),备忘
- python3(八)sys模块
- ann人工神经网络_深度学习-人工神经网络(ANN)
- 上半年银行罚单不断,7月越早贷款越有利