声明提升

js代码解析原则:
首先js引擎在读取js代码时会进行两个步骤,第一个步骤是解释,第二个步骤是执行。
所谓解释就是会先通篇扫描所有的Js代码,然后把所有声明提升到顶端,第二步是执行,执行就是操作一类的。

1.变量声明提升

    function show(){
        console.log(x);// undefined
        var x = 10;
      }
     
      上面代码解释后:
      function show(){
        var x;// 变量提升(把变量声明提升到当前执行环境的最顶端)
        console.log(x);// 未赋值 undefined
        x = 10;
      }

2.函数声明提升

     show();
      function show(){
        var x = 10;
        console.log(x);
      }

      上面代码解释后:
      function show(){ // 函数声明提升直接把整个函数提到执行环境的最顶端
        var x = 10;
        console.log(x);
      }
      show();

3.函数表达式

  函数表达式 必须等到执行到它所在行时,才会从上而下开始解析函数表达式
    console.log(show);// undefined
    // show();// show is not a function
    var show = function(){
       console.log(x);// undefined
       var x = 10;
     }

你可能感兴趣的:(声明提升)