#JS中的变量声明提升和函数声明整体提升#
JS算是学习前端的小萌新们必须要走的一项难关,其中变量和函数提升是JS中很别具一格的特点。由于JS 的预编译特性,所以函数和变量的编译顺序发生了一丢丢和视图不一样的改变。下面让我们一起来学习一下:
首先记住一个宗旨:函数声明会整体提升;变量则是声明提升
一、先看变量的提升:
1.当我们写一段如下的代码时:
var a = 3;
document.write(a);
根据我们之前所学的知识,我们很容易知道会输出一个:
3
2.当代码删去对a的声明时,变成如下时候:
document.write(a);
我们会得到一个ERROR的结果
上面两种情况都是很基础的内容:
第一种因为上面对a有了定义声明并赋值,所以下面可以打印出来;
第二种因为之前没有对a的定义声明,所以出现了未定义的变量从而出现错误。
3.下面让我们看第三种情况:
document.write(a);
var a = 3;
我们此时惊奇地发现:
打印的操作并未出现错误,但是a的值也并未传到页面中。这又是为什么呢?
其实,是变量的声明发生了提升,你可以理解为,将a的定义提前了:
var a;
document.write(a);
a = 3;
进行了如上的操作。以上就是变量提升的说明啦!
二、函数声明整体提升:
我们可以看到:虽然我们的函数在执行语句的后面,但是函数依旧被执行,并没有报错。
这是因为在HTML加载时,< script> 中的function(也就是我们的函数),会被整体提升到开头先进行加载,加载完毕后,再进行其他语句(如执行语句)的进行。 以上就是我对函数声明整体提升和变量声明提升的解释说明了。