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 相关文章推荐
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 Javascript
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
Aug 28 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Django缓存系统实现过程解析
2019/08/02 Python
Django接收自定义http header过程详解
2019/08/23 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
python获取linux系统信息的三种方法
2020/10/14 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
英文自荐信
2013/12/15 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
开国大典观后感
2015/06/04 职场文书