zoukankan      html  css  js  c++  java
  • JavaScript中的变量提升和函数提升

    在EcmaScript5中只有全局作用域和函数作用域,EcmaScript6增加了块级作用域。
    块级作用域(一对花括号{}即为一个块级作用域)

    变量提升

    console.log(name);  //undefined
    var name = "Hello JoeXin!";
    console.log(name);  //Hello JoeXin!
        function f() {
            console.log(name); //undefined
            var name = "JoeXin";
            console.log(name); //JoeXin
        }
    f();       
    

    实质

    var name; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值
    console.log(name); // undefined
    name = 'Hello JoeXin!'; // 此时才赋值
    console.log(name); // 打印出Hello JoeXin!
     
    function fn () {
      var name; // 变量提升,函数作用域范围内
      console.log(name);
       name = 'JoeXin';
      console.log(a);
    }
    fn();
    

    函数提升

    js中创建函数有两种方式:函数表达式和函数声明方式。只函数声明方式才存在函数提升!

    函数声明方式提升

    
    function myTest(){
        foo();
        function foo(){
            alert("我来自 foo");
        }
    }
    myTest();
    
    

    函数表达式方式提升 失败

    function myTest(){
       foo();
       var foo =function foo(){
            alert("我来自 foo");
       }
    }
    myTest();  //  打印出  foo is not a function
    
  • 相关阅读:
    【JAVA】BitSet的源码研究
    【JAVA】大整数数据量排序
    三层架构的DCOM配置
    .NET+COM+组件注册方法
    开博感言
    about Cache
    代码HTML
    取远程用户IP地址
    ShowModalDialog页面传值
    about char变量
  • 原文地址:https://www.cnblogs.com/joexin/p/7215276.html
Copyright © 2011-2022 走看看