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 相关文章推荐
JTrackBar水平拖动效果
Jul 15 Javascript
Extjs学习笔记之四 工具栏和菜单
Jan 07 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
js验证身份证号码记录的方法
Apr 26 Javascript
基于vuex实现购物车功能
Jan 10 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
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游戏编程25个脚本代码
2011/02/08 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
python实现的简单RPG游戏流程实例
2015/06/28 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
python 实现按对象传值
2019/12/26 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
数控技术与应用毕业生自荐信
2013/09/24 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
IT工程师岗位职责
2014/07/04 职场文书
园林技术专业求职信
2014/07/28 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
暑期培训班策划方案
2014/08/26 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL