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 相关文章推荐
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
15 个 JavaScript Web UI 库
May 19 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
基于jquery实现的文字淡入淡出效果
Nov 14 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
了解javascript中变量及函数的提升
May 27 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跨时区(UTC时间)应用解决方案
2013/01/11 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
动手学习无线电
2021/03/10 无线电
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
简单了解python模块概念
2018/01/11 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Pandas分组与排序的实现
2019/07/23 Python
python将时分秒转换成秒的实例
2019/12/07 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
python数据类型强制转换实例详解
2020/06/22 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
临床医师专业个人自我评价范文
2013/11/07 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
员工培训邀请函
2014/02/02 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
草房子读书笔记
2015/06/29 职场文书
2016猴年春节问候语
2015/11/11 职场文书
八年级语文教学反思
2016/03/03 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android