曾经遇到过下面这两种情况:
console.log(global); // undefined
var global = 'global';
console.log(global); // global
function fn () {
console.log(a); // undefined
var a = 'aaa';
console.log(a); // aaa
}
fn();
1,变量提升:
在ES6之前,JavaScript没有块级作用域的(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。
代码片段
console.log(f1); // function f1() {}
console.log(f2); // undefined
function f1() {}
var f2 = function() {}
2,函数提升:
js中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升!
网友评论