zoukankan      html  css  js  c++  java
  • JavaScript--声明提前

    声明提前(hoist): 在正式执行程序前,都会将所有var声明的变量和function声明的函数提前到*当前作用域*的顶部集中创建。
    但是,赋值留在原地。

        console.log(a);//undefined
        var a=10;
        console.log(a);//10

    同理,下面也是一个例子:

    因为函数的声明提前,同时第二个fun()覆盖了第一个fun(),所以第一个fun()会弹出2,第二个同理也是弹出2,第三个console.log则会输出var定义的100,最后一个fun()

     1   fun();//2
     2   function fun(){
     3     alert(1);
     4   }
     5   fun();//2
     6   function fun(){
     7     alert(2);
     8   }
     9   var fun=100;
    10   console.log(fun);//100
    11   fun();//Uncaught TypeError: fun is not a function

    再来一个例子:

    因为函数内声明的变量a提前到函数作用域的顶端,但是值留在了原地,所以第一次console.log输出的是undefined,第二次输出100,同时函数执行完后被垃圾回收,最后一次console.log输出全部变量的值10。

    1  var a=10;
    2   function fun(){
    3     console.log(a);//undefined
    4     var a=100;
    5     console.log(a);
    6   }
    7   fun();//100
    8   console.log(a);//10
  • 相关阅读:
    JSTL&EL
    Response
    HTTP、Request
    Tomcat、Servlet
    单片机概念及应用
    JQuery高级
    Jquery基础
    JavaScript
    HTML、CSS
    跟着文档学习gulp1.2创建任务(task)
  • 原文地址:https://www.cnblogs.com/chenzeyongjsj/p/5517333.html
Copyright © 2011-2022 走看看