字面量声明和函数式声明

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

//function(){var ss =1}

原文地址:https://www.cnblogs.com/coding4/p/5681651.html