console.log('global begin:' + i); //undefined
var i = 1;
foo(1);//函数执行上下文 可以执行
function foo(i) {
if (i == 4) {
return;
}
console.log("foo()begin:" + i);//1
foo(i + 1);//递归调用 函数内部调用 执行自己
console.log("foo()end:" + i);
}
console.log("global end:" + i);//1
1、依次输出什么
2、整个过程中产生了几个执行上下文 :5个
window foo(1) foo(2) foo(3) foo(4)
递归调用 函数内部调用 执行自己 --具有终止条件
function a(){}//function
var a;//undefined
console.log(typeof a);//function
1、说明变量先提升 ,之后再执行变量提升 ,所以之后的a是function
if(!(b in window)){
var b=1;
}
console.log(b);//undefined
if (!(b in window)) { //如果b属性不在window
var b = 1;
}
console.log(b); //undefined 变量提升
2、b变量提升
var c = 1;
function c(c) {
console.log(c)
}
c(2);//报错
3、说明,变量赋值之后 函数声明被弹出