一、变量提升是指将变量声明提升到它所在作用域的最开始部分
console.log(a) // undefined
var a = 1;
console.log(a) // 1
为什么会出现以上的结果,是因为js的变量提升,将a变量的声明提升到全局作用域的最上面部分,实际代码如下:
var a;
console.log(a)
a = 1;
console.log(a)
二、函数提升是指将函数声明提升到它所在作用域的最开始部分
备注:js创建函数有两种方式,一种是函数声明和函数表达式,只有函数声明才存在函数提升
var fn = function() {
console.log('test')
}
function fn() {
console.log('test1')
}
console.log(fn()) // 'test'
为什么会出现以上结果,是因为js的变量提升,将函数声明提到该函数作用的最上部分,实际代码如下:
function fn() {
console.log('test1')
}
var fn = function() {
console.log('test')
}
console.log(fn())