// 函数声明整体提升,变量只有声明提升,赋值是不提升的
var a=1;// 是有两个步骤的,一是声明变量,二是变量赋值;
test(); // 1 function test(){ conslo.log(1); } console.log(a); // undefined var a;
思考,为啥执行的位置不一样;会产生这种变化变化?
function getName() { console.log(1); } var getName = function () { console.log(2); } getName(); // 2 var a=1; function a(){ console.log(2); } console.log(a); // 1
getName(); // 1 function getName() { console.log(1); } var getName = function () { console.log(2); } console.log(a); // 函数a var a=1; function a(){ console.log(2); }
函数里面没有声明的变量,都是在window下的,不管是多少层函数内;
// GO与AO类似,就是没有参数
1.找变量;
2.找函数声明
2.执行
GO={ a:undefined->function a(){}->1 }