`
zhouyrt
  • 浏览: 1172635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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);
  • 大小: 5.8 KB
1
0
分享到:
评论

相关推荐

    js中变量的连续赋值(实例讲解).docx

    JS 中变量的连续赋值(实例讲解) 在 JavaScript 中,变量的连续赋值是一种常见的语法结构,它可以将多个变量赋值给同一个值或不同的值。本文将通过实例讲解,详细介绍 JS 中变量的连续赋值的机理和应用。 一、...

    PHP+JavaScript+HTML变量之间赋值及传递1

    在构建Web应用时,PHP、JavaScript和HTML之间的变量赋值和传递是至关重要的。这篇文章主要讲解了如何在这些技术之间进行数据交互。 首先,我们来看HTML超链接如何传递值。在HTML中,我们可以使用`<a>`标签创建链接...

    javascript变量作用域

    在 JavaScript 中,函数中声明的变量在整个函数中都有定义。这意味着,即使在函数体内部定义了局部变量,该变量也可以在整个函数体内使用,并可以重新赋值。 了解 JavaScript 变量作用域的规则非常重要,因为它可以...

    JavaScript:变量与数据类型

    ### JavaScript中的变量与数据类型...通过以上内容,我们可以了解到JavaScript中变量的基本概念、声明与赋值的方法,以及变量的作用域和生命周期的管理。掌握这些基础知识对于编写高效、可靠的JavaScript程序至关重要。

    JavaScript中 ES6变量的结构赋值

    本文将深入讲解JavaScript中ES6变量的结构赋值及其应用。 1. **交换变量的值** 在传统JavaScript中,交换两个变量的值通常需要引入第三个临时变量。但ES6的结构赋值提供了更简洁的方式: ```javascript let x = ...

    JavaScript变量声明详解

    本文将深入探讨JavaScript中的变量声明方式,以及与之相关的全局变量、局部变量、隐式全局变量和“hoisting”(悬置/置顶解析/预解析)的概念。 首先,JavaScript提供了三种声明变量的方式:`var`、`let` 和 `const...

    JavaScript声明全局变量访问方法

    在JavaScript中,全局变量是一种可以在整个程序中任何地方访问的变量,它们的作用域跨越函数和代码块。本篇文章将深入探讨JavaScript声明全局变量的几种方法以及如何访问这些变量。 1. **全局变量的声明方式** - ...

    ECMAScript6变量的解构赋值实例详解

    在ECMAScript6中,解构赋值是一项强大的语法特性,它允许开发者从数组和对象中方便地提取值并赋给变量。解构赋值的语法简洁且灵活,使得代码更加清晰易读。下面我们将深入探讨这一特性。 首先,解构赋值的基本形式...

    【JavaScript源代码】JavaScript中变量提升和函数提升实例详解.docx

    变量提升和函数提升在JavaScript中的应用 JavaScript是一种基于对象的脚本语言,广泛应用于Web开发中。其中,变量提升和函数提升是JavaScript语言中两个非常重要的概念。变量提升和函数提升是JavaScript语言的核心...

    JavaScript变量

    在JavaScript中,变量命名有着一定的规范和推荐的最佳实践,这对于代码的可读性和维护性至关重要。 ##### 1. 命名规则 - **首字符限制**:变量名的第一个字符必须是字母、下划线`_`或者美元符号`$`。 - **后续字符...

    大工21秋《JavaScript基础教程与应用》在线作业3-【答案】.pdf

    在 JavaScript 中,变量声明和赋值语句有多种形式。例如,var x = 10; 是一种常见的变量声明和赋值语句形式。int 是一种不合法的变量声明形式。 六、获取滚动条距窗口顶端滚动的距离 在 JavaScript 中,可以使用 ...

    ES6变量声明与赋值:值传递、浅拷贝与深拷贝详解

    在JavaScript中,基本的变量声明可以用var方式;JavaScript允许省略var,直接对未声明的变量赋值。也就是说,vara=1与a=1,这两条语句的效果相同。但是由于这样的做法很容易不知不觉地创建全局变量(尤其是在函数...

    JavaScript的变量声明与声明提前用法实例分析

    在JavaScript中,如果我们给一个未声明的变量赋值,实际上是创建了一个全局变量。这是因为在非严格模式下,JavaScript会自动将未声明的变量作为全局对象的一个属性。这可能导致意外的副作用,特别是在大型应用中,...

    JavaScript的变量声明提升问题浅析(Hoisting)

    JavaScript中的变量声明提升,也称为Hoisting,是一个关键的概念,尤其对于初学者来说可能有些棘手。Hoisting是指JavaScript在代码执行前会把所有的变量声明(`var`、`let`、`const`,不过`let`和`const`的提升效果...

    javascript全局变量说明示例

    看看有帮助,全局变量,与局部变量的差异!

    JavaScript中函数声明优先于变量声明的实例分析

    具体来说,JavaScript中的函数声明和变量声明都遵循所谓的提升(hoisting)规则,这意味着它们在实际执行前会被提升到当前作用域的顶部。这一点对于理解JavaScript的作用域和声明机制至关重要。 首先,来看看变量...

    Javascript var变量隐式声明方法

    综上所述,虽然JavaScript中的隐式变量声明是语言的一个特性,但这种做法通常会带来意料之外的问题,因此应尽量避免使用。良好的编码实践是使用var、let或const关键字来声明所有变量,以此保证代码的清晰和稳定。

    var与Javascript变量隐式声明

    总结来说,理解JavaScript中的变量声明、变量提升(hoisting)以及作用域规则,对于编写健壮的JavaScript代码至关重要。尽管`var`关键字允许隐式声明变量,但在编写代码时,我们应当避免这种做法,转而使用`let`和`...

    javascript变量和函数

    变量是JavaScript中存储值的关键概念,使用`var`关键字定义。JavaScript是弱类型语言,变量可以存储不同数据类型,包括Number、String、Boolean、Object、Function,以及特殊的数据类型Null和Undefined。基本数据...

Global site tag (gtag.js) - Google Analytics