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 相关文章推荐
用Javascript数组处理多个字符串的连接问题
Aug 20 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
JQuery加载图片自适应固定大小的DIV
Sep 12 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
node.js中的http.createServer方法使用说明
Dec 14 Javascript
JQuery实现图片轮播效果
Sep 15 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
layui 弹出删除确认界面的实例
Sep 06 Javascript
JavaScript自定义超时API代码实例
Apr 30 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
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php中switch语句用法详解
2015/08/17 PHP
php实现分页显示
2015/11/03 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
Python 基础之字符串string详解及实例
2017/04/01 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Django中create和save方法的不同
2019/08/13 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
服装设计专业毕业生推荐信
2013/11/09 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
小露珠教学反思
2014/04/30 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
运动会演讲稿100字
2014/08/25 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
运动会宣传稿100字
2015/07/23 职场文书
新学期主题班会
2015/08/17 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
详解Redis主从复制实践
2021/05/19 Redis
hive数据仓库新增字段方法
2022/06/25 数据库