变量对象(VO)执行顺序
1.函数参数(没有赋值时,为undefined)
2.函数声明(发生命名冲突,会覆盖之前的)
3.变量声明(初始值为undefined时,发生命名冲突,会被忽略)
function fun(x, y, z) {
var func = function() {
console.log('function');
};
var func; //被忽略
console.log(func);
}
fun();
//function
function fun(x, y, z) {
var func = function() {
console.log('function');
};
var func = 1; //覆盖
console.log(func);
}
fun();
//1
4.函数和变量都可以前置;
但是变量前置只是变量名前置,而变量值没有被前置是undefined;
所以,函数可以在声明之前调用,变量不能;
console.log(x); //function //函数声明被前置 var x = 10; console.log(x); //10 x = 20 function x() {}; console.log(x) //20
if (true) {
var a = 1
} else {
var b = true
}
console.log(a) //1
console.log(b) //undefined
