var a = 1;
function b() {
console.log(2);
}
(function (){
console.log(a);
b();
var a = 3;
function b(){
console.log(4);
}
})()


结果:

undefined

4 

闭包中,里边的a 和 b的都会覆盖外边的,但是字面量的声明, 在那一行的执行过之后才会有赋值,而函数式的声明在没有执行前,就会覆盖的。

===================

在来试一下:

字面量声明和函数式声明_赋值

//a

字面量声明和函数式声明_函数式_02

 

//function(){var ss =1}