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 相关文章推荐
选择TreeView控件的树状数据节点的JS方法(jquery)
Feb 06 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
微信小程序 scroll-view的使用案例代码详解
Jun 11 Javascript
一百多行代码实现react拖拽hooks
Mar 23 Javascript
浅谈JavaScript作用域
Dec 06 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php checkbox 取值详细说明
2010/08/19 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python 爬取携程所有机票的实例代码
2018/06/11 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python list转矩阵的实例讲解
2018/08/04 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
简单了解Python生成器是什么
2019/07/02 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
自荐信格式范文
2013/10/07 职场文书
高中学校对照检查材料
2014/08/31 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
php 原生分页
2021/04/01 PHP
用python批量解压带密码的压缩包
2021/05/31 Python
Python基于百度AI实现抓取表情包
2021/06/27 Python