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

 更新时间:2012年03月01日 22:24:53   作者:  
JavaScript中的变量声明早于赋值分析,需要的朋友可以参考下
如下
复制代码 代码如下:
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中如下

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

复制代码 代码如下:

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中实现单体模式分享

    这篇文章主要介绍了JavaScript中实现单体模式分享,单体模式的定义:单体是一个用来划分命名空间并将一批相关方法和属性组织在一起的对象,如果它能够被实例化,那么只能被实例化一次,需要的朋友可以参考下
    2015-01-01
  • JS栈stack类的实现与使用方法示例

    JS栈stack类的实现与使用方法示例

    这篇文章主要介绍了JS栈stack类的实现与使用方法,结合实例形式分析了栈的原理,以及javascript定义与使用栈的基本操作技巧,需要的朋友可以参考下
    2019-01-01
  • JS对URL字符串进行编码/解码分析

    JS对URL字符串进行编码/解码分析

    节约时间,先写出总结,推荐使用encodeURIComponent()来对URL进行编码。
    2008-10-10
  • JavaScript实现简易tab栏切换案例

    JavaScript实现简易tab栏切换案例

    这篇文章主要为大家详细介绍了JavaScript实现简易tab栏切换案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • javascript实现多级联动下拉菜单的方法

    javascript实现多级联动下拉菜单的方法

    这篇文章主要介绍了javascript实现多级联动下拉菜单的方法,通过javascript自定义函数实现对多级联动下拉菜单的操作,是非常实用的技巧,需要的朋友可以参考下
    2015-02-02
  • 小程序封装wx.request请求并创建接口管理文件的实现

    小程序封装wx.request请求并创建接口管理文件的实现

    这篇文章主要介绍了小程序封装wx.request请求并创建接口管理文件
    2019-04-04
  • js实现图片局部放大镜效果的示例代码

    js实现图片局部放大镜效果的示例代码

    这篇文章主要为大家详细介绍了如何利用JavaScript实现图片局部放大镜效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • JS对大量数据进行多重过滤的方法

    JS对大量数据进行多重过滤的方法

    今天在工作中遇到一个问题,当前端通过Ajax从后端取得了大量的数据,需要根据一些条件过滤,但是发现写的过滤方法有问题,后来仔细的查找问题,通过网上的资料终于解决了这个问题,现在将解决的过程以及解决方法分享给大家,有需要的朋友们可以参考借鉴。
    2016-11-11
  • JS实现简易换图时钟功能分析

    JS实现简易换图时钟功能分析

    这篇文章主要介绍了JS实现简易换图时钟功能,结合实例形式分析了javascript结合时间函数定时变换显示图片实现时钟功能的相关操作技巧,代码中备有较为详尽的注释便于理解,需要的朋友可以参考下
    2018-01-01
  • JavaScript webpack模块打包器如何优化前端性能

    JavaScript webpack模块打包器如何优化前端性能

    本系列主要整理前端面试中需要掌握的知识点。本节介绍webpack如何优化前端性能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论