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截取中文字符串的实现代码
Dec 22 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
JavaScript实现文字与图片拖拽效果的方法
Feb 16 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
vue2.x+webpack快速搭建前端项目框架详解
Nov 30 Javascript
vue组件开发props验证的实现
Feb 12 Javascript
vue项目中使用vue-layer弹框插件的方法
Mar 11 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中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
php实现的漂亮分页方法
2014/04/17 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
使用Python进行目录的对比方法
2018/11/01 Python
Django框架安装方法图文详解
2019/11/04 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
工程管理造价应届生求职信
2013/11/13 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
委托公证书
2014/04/08 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
公司委托书范本5篇
2014/09/20 职场文书
英语教师个人总结
2015/02/09 职场文书
教师自荐信范文
2015/03/06 职场文书
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
python井字棋游戏实现人机对战
2022/04/28 Python