javascript 关于局部变量和全局变量
js中函数运行过程不仅仅是单纯的局部变量覆盖全局变量。和函数里面的声明情况有关。
比方:
<script>
var a =1;
function test(){
alert(a); //a为undefined! 这个a并非全局变量。这是由于在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量,
//所以全局变量a被覆盖了。这说明了Javascript在运行前会对整个脚本文件的定义部分做完整分析,所以在函数test()运行前,
//函数体中的变量a就被指向内部的局部变量.而不是指向外部的全局变量. 但这时a仅仅有声明。还没赋值,所以输出undefined。
a=4
alert(a); //a为4,没悬念了吧? 这里的a还是局部变量哦! var a; //局部变量a在这行声明
alert(a); //a还是为4,这是由于之前已把4赋给a了
}
test();
alert(a); //a为1,这里并不在function scope内。a的值为全局变量的值
</script>
javascript 关于局部变量和全局变量的更多相关文章
- JavaScript中局部变量与全局变量的不同
JavaScript中局部变量与全局变量 我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的.比如: var person=18; perso ...
- 对JavaScript中局部变量、全局变量和闭包的理解
对js中局部变量.全局变量和闭包的理解 局部变量 对于局部变量,js给出的定义是这样的:在 JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域 ...
- javascript当中局部变量和全局变量
2)局部变量和全局变量 马克-to-win:浏览器里面 window 就是 global,通常可以省.nodejs 里没有 window,但是有个叫 global 的.例 3.2.1<html& ...
- JavaScript的局部变量和全局变量小知识
(了解一下,避免初学者犯错,但下面定义全局变量的做法并不推荐,只是让你们知道这是怎么一回事) 如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,例如: function test ...
- JavaScript局部变量和全局变量的理解
原文链接:http://www.cnblogs.com/eric-qin/p/4166552.html JavaScript局部变量和全局变量的理解 1 2 3 4 5 6 7 8 9 10 &l ...
- javascript 局部变量和全局变量
刚开始学js,遇到了一个奇怪的问题,查找之后知道了答案 需要记住两句话 1 Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是f ...
- Javascript中的局部变量、全局变量的详解与var、let的使用区别
前言 Javascript中的变量定义方式有以下三种方式:1.直接定义变量,var与let均不写: a = 10; 2.使用var关键字定义变量 var a = 10; 3.使用let关键字定义变量 ...
- js方法入参或局部变量和全局变量重名,用来赋值全局变量会失败
今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值 ...
- JS的局部变量和全局变量
两段JS代码的区别: <script type="text/javascript"> var a = "Hello"; function test( ...
随机推荐
- Inno Setup入门(二)——修改安装过程中的图片
修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: 其实也可以修改它,只需要在setup段中作一点稍微的修改,加一行代码即可: [setup] AppName=Test ...
- PAC Manager的重生: Asbru
PAC Manager在2016年停更后, 在Ubuntu18.04上的各种bug就无人修复了. 我在Windows下对XShell是重度依赖, 而在Linux下没有其他更好的替代品. 在上一次安装1 ...
- KVM安装和配置
[未验证部分] kvm安装前检查 # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 ca ...
- taskkill命令应用
taskkill命令用来在控制台下杀死进程 举例: 杀死PID为4276的进程 E:\android-sdk-windows\tools>taskkill /PID 4276 错误: 无法终止 ...
- 【php导出pdf文件】php将html 导出成pdf文件(MPDF60),支持完美分页,注意是完美!!
1.使用 MPDF60 包 2.防止中文乱码:修改MPDF/MPDF60/config.php中 $this->autoLangToFont = true; $this->autoScri ...
- EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手
----------------------------目录------------------------------ EntityFramework 5.0 CodeFirst 教程03-数据结构 ...
- ios中tableview的移动添加删除
// // MJViewController.m // UITableView-编辑模式 // // Created by mj on 13-4-11. // Copyright (c) 2013年 ...
- 使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)
原文: http://njm.iteye.com/blog/795881 --使用 自连接.for xml path('')和stuff合并显示多行数据到一行中 --注 --1.计算列可以不用包含在聚 ...
- java struts2入门学习---拦截器学习
一.拦截器,拦截器栈 1.拦截器的作用 拦截器本质上和servlet的过滤器是一样的.在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦 ...
- OC中instancetype与id的区别
1.在ARC环境下: instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型, 运行时检查类型. 2.在MRC环境下: instancetype和id一样,不做具体类型检 ...