前端学习2 变量提升
JS的变量提升指的是代码在执行前会将变量提升到作用域的顶部,仅存在var声明变量中。
console.log(num + '件') // undefined
var num = 10
只提升生命,不提升赋值。 上段代码类似于
var num;
console.log(num + '件')
num = 10;
在函数作用域中也同样遵循该规则。
注意
1、let/const声明的变量在未声明即被访问时会报语法错误。
2、变量在var声明之前即被访问,变量的值为undefined。
3、let/const声明的变量不存在变量提升。
4、变量提升出现在相同作用域中。
函数提升
// 1、会把所有函数声明提升到当前作用域的最前面
// 2、只提升函数声明,不提升函数调用
fn()
function fn(){
console.log('函数提升')
}
// 正常运行,因为js函数并不是立即执行的,只有在运行时,通过声明找到需要运行的函数就可以。
// 如果我们使用函数表达式声明一个函数,必须先声明函数后调用,否则会报错。
fun() // 报错
fun = function(){
console.log('函数表达式')
}
注意
1、函数提升能够使函数的声明调用更灵活。
2、函数表达式不存在提升的现象。
3、函数提升出现在相同作用域当中。
#前端学习#