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 相关文章推荐
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
Ajax 数据请求的简单分析
Apr 05 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
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
PHP4中session登录页面的应用
2008/07/25 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue引入jq插件的实例讲解
2017/09/12 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
Python Sleep休眠函数使用简单实例
2015/02/02 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
Python的装饰器使用详解
2017/06/26 Python
eclipse创建python项目步骤详解
2019/05/10 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
施工安全责任书
2014/04/14 职场文书
答谢会策划方案
2014/05/12 职场文书
2014高考励志标语
2014/06/05 职场文书
2014年终个人总结报告
2015/03/09 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript