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 相关文章推荐
javascript 获取表单file全路径
Dec 31 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
javascript数字数组去重复项的实现代码
Dec 30 Javascript
JS冒泡事件的快速解决方法
Dec 16 Javascript
JS获取url链接字符串 location.href
Dec 23 Javascript
jQuery post数据至ashx实例详解
Nov 18 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
Oct 19 Javascript
Javascript通过控制类名更改样式
May 24 Javascript
ztree+ajax实现文件树下载功能
May 18 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
Python书单 不将就
2017/07/11 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
浅谈python之新式类
2018/08/12 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
写给妈妈的道歉信
2014/01/11 职场文书
高中学生期末评语
2014/04/25 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP