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 相关文章推荐
javascritp实现input输入框相关限制用法
Jun 29 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
jQuery的12招常用技巧分享
Aug 08 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
微信小程序自定义导航栏实例代码
Apr 05 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 str_pad 函数用法简介
2009/07/11 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
几道PHP的面试题
2012/05/19 面试题
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
销售主管竞聘书
2014/03/31 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
初中作文评语
2014/12/25 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书