静态作用域
函数的作用域在定义时就决定了。
var value = 1;
function foo(){
console.log(value);
}
function bar(){
var value = 2;
foo();
}
bar() //1
变量对象
进入执行上下文时,首先会处理函数声明,其次会处理变量声明,如果如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性。
console.log(foo); //foo(){console.log("foo")}
function foo(){
console.log("foo");
}
var foo = 1;
var foo = 1;
console.log(foo);
function foo(){
console.log("foo");
};
//这次打印结果就是“1”;
//分解
var foo; // 如果如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性
foo = 1;// 代码执行。PS: 如果没有这行,打印结果是 function foo(){console.log('foo')};
console.log(foo); // 1
function foo(){
console.log("foo");
};