浅谈JavaScript中的变量提升

今天我给大家分享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的不同之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值