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

1、概念

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

2、举例说明

变量提升

console.log(a);//undefined
var a = 2;
console.log(a);//2

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

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

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

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

函数提升:

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

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

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

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

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

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

function test1(){
    console.log("123");
}// 函数提升,整个代码块提升到函数作用域的最顶端
test1();
test2();
var test2 = function(){
    console.log("test2");
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值