1》概念:
js代码执行之前会在相应的执行环境中(全局环境,局部环境)预先把一些东西(function,var定义的变量)解析到内存中
2》过程:
1)创建一个当前执行环境下的活动对象
2)将var声明的变量设置为活动对象的属性(也就是将其添加到活动对象当中),并将其赋值为undefined
3)将function定义的函数也添加到活动对象当中
3》具体情况:
函数定义的方法有:函数表达式,函数声明(当函数声明有提升)
当变量和函数同名时,函数提升比变量提升优先级高
3》js的变量提升和函数提升
函数提升比变量提升优先级高(只有函数声明有提升)
function t1(age) {
console.log(age);
var age = 27;
console.log(age);
function age() {}
console.log(age);
}
t1(3);//ƒ age() {} 27 27
分析完成后:
function t1(age) {
var age= function () {}
console.log(age);
var age = 27;
console.log(age);
console.log(age);
}
t1(3);
1>变量提升
变量提升即将变量声明提升到它所在作用域的最开始的部分。
console.log(global); // undefined
var global = 'global';
console.log(global); // global
2>函数提升
js中创建函数有两种方式:函数声明和函数表达式。只有函数声明有提升
console.log(f1); // function f1() {}
console.log(f2); // undefined
function f1() {} //函数声明
var f2 = function() {} //函数表达式
function f1() {} // 函数提升,整个代码块提升到文件的最开始
console.log(f1);
console.log(f2);
var f2 = function() {}