Javascript全局变量var与不var的区别深入解析


Posted in Javascript onDecember 09, 2013

相信你对全局变量一定不陌生,在函数作用域里用a=1这种形式定义的变量会是一个全局变量,在全局作用域里,用下面3种形式都可以创建对全局可见的命名:

<script>
var a = 1;
b = 2;
window.c = 3;
</script>

对于b=2这种方式, 它其实和c是一样的,在执行这个赋值语句的时候,会沿着作用域链寻找名字叫做b的变量,一直找到作用域链的顶端还没有找到,于是给window添加一个属性b然后赋值。

var与不var有两个区别:

1 var的全局变量不能被删除,因为delete智能删除对象的可删除的属性,而通过var 定义的全局属性会被标明不可删除。需要说明的是,delete不成功并不会抛错,delete的返回值是true|false。

2 var定义的全局变量会被提升,而不用var定义的全局变量不会被提升。可以看下面程序的执行结果:

<script>
alert(a);
var a=1;
</script>

<script>
alert(a);//error, a undefined
a=1;
</script>
Javascript 相关文章推荐
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
可选择和输入的下拉列表框示例
Nov 05 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
vue实现放大镜效果
Sep 17 Javascript
Vue接口封装的完整步骤记录
May 14 Vue.js
JavaScript ES6的函数拓展
Jan 18 Javascript
jquery div拖动效果示例代码
Dec 08 #Javascript
jquery垂直公告滚动实现代码
Dec 08 #Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 #Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 #Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 #Javascript
JavaScript 32位整型无符号操作示例
Dec 08 #Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 #Javascript
You might like
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python的Flask框架中web表单的教程
2015/04/20 Python
使用python实现BLAST
2018/02/12 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
在django模板中实现超链接配置
2019/08/21 Python
在pycharm中实现删除bookmark
2020/02/14 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
Android面试宝典
2013/08/06 面试题
职业道德模范事迹材料
2014/08/24 职场文书
2014年政工师工作总结
2014/12/18 职场文书
医学生自荐信范文
2015/03/05 职场文书
团队拓展训练感想
2015/08/07 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
各国货币符号大全
2022/02/17 杂记
python manim实现排序算法动画示例
2022/08/14 Python