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 相关文章推荐
文字幻灯片
Jun 26 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
js中设置元素class的三种方法小结
Aug 28 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
jquery鼠标滑过提示title具体实现代码
Aug 06 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
js实现获取div坐标的方法
Nov 16 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
JavaScript canvas绘制折线图
Feb 18 Javascript
vue实现顶部菜单栏
Nov 08 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
如何将数据从文本导入到mysql
2006/10/09 PHP
文件上传程序的全部源码
2006/10/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
使用正则替换变量
2007/05/05 Javascript
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
js charAt的使用示例
2014/02/18 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
python二分查找算法的递归实现方法
2016/05/12 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
python搜索包的路径的实现方法
2019/07/19 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
个人贷款授权委托书样本
2014/10/07 职场文书
同学会感言
2015/07/30 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
Python实现Hash算法
2022/03/18 Python