JavaScript中的变量声明早于赋值分析


Posted in Javascript onMarch 01, 2012

如下

var a = 3;

实际有两个步骤:
1 初始化a为undefined
2 a赋值3

因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。

System.out.println(a); 
int a = 1;

编译通不过。但JS可以,如下
alert(a); 
var a;

虽然是undefined,但不会报错。说明a的确声明了,且为undefined。

如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。

alert(a);

FF中如下

JavaScript中的变量声明早于赋值分析

虽然可以先使用再声明,但这样会造成赋值的效果丢失。如下

alert(a); 
var a = 1;

这次输出的仍然是undefined而非1。

又如,

alert('a' in window); // true 
var a;

虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。

明白了这些就不难理解下面的代码运行结果了

if (!("a" in window)) { 
var a = 1; 
} 
alert(a);
Javascript 相关文章推荐
JQuery判断子iframe何时加载完成解决方案
Aug 20 Javascript
ExpressJS入门实例
Jan 14 Javascript
每天一篇javascript学习小结(属性定义方法)
Nov 19 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
Dec 04 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
JavaScript中函数声明优先于变量声明的实例分析
Mar 01 #Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 #Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 #Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
Mar 01 #Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 #Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
Mar 01 #Javascript
JavaScript版DateAdd和DateDiff函数代码
Mar 01 #Javascript
You might like
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
js实现表格筛选功能
2017/01/18 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python调用百度REST API实现语音识别
2018/08/30 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
10个顶级Python实用库推荐
2021/03/04 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
竞选班长自荐书范文
2014/03/09 职场文书
党员承诺书格式
2014/05/21 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
大四毕业生自荐书
2014/07/05 职场文书
少年雷锋观后感
2015/06/10 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers