zoukankan      html  css  js  c++  java
  • js变量提升与函数提升

    举个栗子:
    function foo() {
        alert("global foo");
    }
    function bar() {

        alert("global bar");
    }
    var v = "global var"; //定义全局变量
    function hoistMe() {

        alert(typeof foo);
        alert(typeof bar);
        alert(v);
        foo();
        bar();
        function foo() {
             alert("local foo");
        }
        var bar = function() {
              alert("local bar");
        }
        var v = "local";

    }
    (function() {
         hoistMe();
    });
    //函数表达式和变量表达式只是其声明被提升,函数声明是函数的声明和实现都被提升。
    /**由于函数提升的效果,hoistMe方法相当于
    function hoistMe()
    {
         //函数声明,变量foo以及其实现被提升到hoistMe函数顶部
         function foo() { alert("local foo"); }
         //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升(同变量提升)
         var bar = undefined;
          //变量声明被提升
         var v = undefined;
         alert(typeof foo); //function
         alert(typeof bar); //undefined
         foo(); //local foo
         bar(); //报错,缺少对象
         bar = function() {
              alert("local bar");
          };
          v = "local";
    }

  • 相关阅读:
    Java 老兵不死,Kotlin 蓄势待发
    程序员写代码时戴着耳机,在听什么?
    推荐 7 个提升前端编程效率的 VSCode 插件
    去掉烦人的 !=null
    透析!软件开发未来 10 年的 8 个趋势
    10月01日总结
    09月29日总结
    09月28日总结
    09月27日总结
    09月26日总结
  • 原文地址:https://www.cnblogs.com/xingzoudecd/p/8552050.html
Copyright © 2011-2022 走看看