ES6学习笔记1:变量提升以及函数提升

来源:互联网 发布:网络歌手 金达莱花 编辑:程序博客网 时间:2024/06/07 22:09

1、概念

变量提升:变量提升即将变量声明提升到它所在作用域的最开始的部分;
函数提升:函数提升即将函数的声明会提升到它所在作用域的最开始的部分。

2、举例说明

变量提升

console.log(a);//undefinedvar a = 2;console.log(a);//2

之所以会是以上的打印结果,是由于js的变量提升,实际上上面的代码是按照以下来执行的:

var a; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值console.log(a); // undefineda= 'a'; // 此时才赋值console.log(a); // 打印出2

es6里面定义变量,还有let,不存在变量提升的现象

console.log(a);//Uncaught SyntaxError: Identifier 'a' has already been declaredlet a = 2;console.log(a);//2

函数提升:

函数提升的优先级大于变量提升的优先级

首先我们需要明白函数的三种定义方式:

function func1(){};//函数字面量var func2 = function(){};var func3 = new Function();

这三种定义方式,只有第一种方式才存在函数提升的现象,即第一种

function func1();
test1();//输出结果:2test2();//Uncaught TypeError: test2 is not a functionfunction test1(){    console.log("123");}var test2 = function(){    console.log("test2");}

之所以是上述现象是因为浏览器引擎对javascript代码的处理过程

function test1(){    console.log("123");}// 函数提升,整个代码块提升到函数作用域的最顶端test1();test2();var test2 = function(){    console.log("test2");}
原创粉丝点击