您的位置:首页 > Web前端 > JavaScript

浅淡JavaScript中的变量提升

2017-10-28 12:40 218 查看
今天我给大家分享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 博客