//基础(变量提神后 var a;  console.log(a)   a=1   声明会被提到顶部,而a=1在原地不动)
    console.log(a)  //underfind
    var a=1

    //例子1  
    //这里举了一个例子,我创建了一个函数a 判断这个b是否有值;在判断里面声明了B。运行结果是5
    //如果当前作用域中存在此变量声明,无论它在什么地方声明,引用此变量时就会在当前作用域中查找,不会去外层作用域了。
    function a() {
        //编译后 var b;
        if (!b) {
            var b = 5;  //编译后:b=5
        }
        console.log(b); // 5
    }
    a();

    //第二个例子  (因为函数内部已经存在变量b,所以不会再去外部执行)
    var b = 3;
    function a() {
        //编译后  var b;
        var b = b || 10; //编译后:b=b||10
        console.log(b)  //10
    }
    a();  //运行结果是10

    //第三个例子(JavaScript没有块作用域,只有全局作用域和函数作用域)
    function a() {
        //编译后   var b;
        var b = 3;    //编译后b=3;
        {
            var b = 5;//编译后b=5;
        }
        console.log(b);//b=5
    }
    a();  //运行结果是5,为什么呢,其实跟上面的例子相同,只不过执行顺序的原因