浅淡JavaScript中的变量提升

原创 2017年10月28日 12:40:34
今天我给大家分享JavaScript中的变量提升,这是java中变有的概念,在这里我将会结合java作一个简单的比较。
请看下面JavaScript的代码:
<script type="text/javascript">
		var a = 11;
		document.write(a);   //11
		document.write(b);  //undefined
		var b = 111;
</script>

大家可以看到上面的代码中,变量b在打印语的后面输出了,却没有报错。这是为什么呢?相信有点java基础的很难相信不会报错,当初我学习的时候也是这样的。下面我解释一下,这是为什么?原因是在JavaScript编译的时候会把<script></script>中的所有变量都提升上来,然后赋值为undefined。然后依然向下执行script语句,直到遇到赋值语句时才会把值赋给变量。从上面的代码可以看到,变量a在打印前初始化了,而变量b在打印后初始化,这才导致结果和想象中的不一样,所以我在里强调大家一句,在写js代码时一定要把所有变量都定义在开头。

下面再下看一段简单的java代码:
public class Test {


	public static void main(String[] args){
		
		int a = 11;
		System.out.println(a);
	//	System.out.println(b);   //b cannot be resolved to a variable
		int b = 111;
	}
}

上面的java代码连编译都通不过,报错说,变量b没有定义。这也就是JavaScript和Java的不同之处。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Javascript作用域和变量提升

[转载请注明来自: http://blog.csdn.net/sunxing007] 下面的程序是什么结果? var foo = 1; function bar() { if (!foo...
  • sunxing007
  • sunxing007
  • 2013年06月05日 22:43
  • 16542

javascript中的变量提升和函数提升详解

我们用循序渐进的例子来看JavaScript中的变量提升和函数提升。 实践一:变量声明提升的优先级高于函数声明提升 比较下面两个例子,将会输出同样的结果: !function(){     conso...
  • Tyro_java
  • Tyro_java
  • 2016年04月12日 13:51
  • 1275

JavaScript的那些坑之变量提升

介绍了JavaScript的变量提升特性和var的一些注意事项。
  • qq_25936689
  • qq_25936689
  • 2016年01月06日 21:10
  • 1128

浅淡SQL中where 1=1和0=1的作用

浅淡SQL中where 1=1和0=1的作用 2011-03-10 13:18 junyuz 博客园 我要评论(1) 字号:T | T where 1=1&where 0=...
  • luozhepanlzp
  • luozhepanlzp
  • 2012年03月13日 01:53
  • 212

浅淡ADB的公私钥认证机制

(转)浅淡ADB的公私钥认证机制 refs: http://bbs.xiaomi.cn/thread-9561013-1-1.html http://forum.xda-develope...
  • MENGHUANBEIKE
  • MENGHUANBEIKE
  • 2017年06月08日 17:18
  • 252

浅淡静态代码分析工具

浅淡静态代码分析工具 分类: Java2009-05-15 09:47 4102人阅读 评论(3) 收藏 举报 本帖hyddd原创,转载请标明 这两天看关于静态代码扫描的...
  • wzwind
  • wzwind
  • 2012年01月06日 17:01
  • 554

浅淡SQL中where 1=1和0=1的作用

where 1=1&where 0=1经常在SQL语句中见到,看见了,过去了,不知道那是什么意思,不知道这条语句的作用,这里笔者为大家一一道来...... where 1=1; 这个条件始终为Tru...
  • RuanJava
  • RuanJava
  • 2011年09月16日 10:08
  • 368

浅淡C/C++中的typedef和#define

在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏 定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++...
  • whkjlcw
  • whkjlcw
  • 2014年04月10日 20:54
  • 564

浅淡Win32 系统级异常处理机制

  • 2016年09月24日 00:50
  • 125KB
  • 下载

C# 中Objec sender 以及 EventArgs e 浅淡分析

  • 2008年08月02日 01:42
  • 31KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅淡JavaScript中的变量提升
举报原因:
原因补充:

(最多只允许输入30个字)