zoukankan      html  css  js  c++  java
  • js 提升

    a = 2;
    console.log(a);
    var a;
    /*这里会输出2  如果按从上往下的执行顺序的话应该输出的是undefined,但是js编译器会把声明变量全部提升到顶部来进行变量声明。所以上面代码等同于:*/
    
    var a;
    a = 2;
    console.log(a);

    从上面例子初步理解了js变量提升后再看下面个例子:

    console.log(a);
    var a = 2;

    按常规逻辑大多人肯定认为会输出2  结果是undefined  为什么呢   因为只有声明本身才会被提升   赋值是不会提升的 因为赋值不是编译阶段的事情,所以上面代码等同于:

    var a;
    console.log(a);
    a=2

     函数提升:

    foo();
    
    
    // function foo() {
    //     console.log('foo');//这里会正常输出
    // }
    var foo = function () {
        console.log('foo');//这里则会报typeerror
    }
    
    //说明函数声明会被提升  而函数表达式则不会提升

     函数提升优先级更高:

    foo();
    
    var foo;
    
    function foo() {
      console.log('foo');  
    }
    
    /*
    按照常规思维  函数和变量都提升了  为什么这里不会报typeerror错误 而是正常输出呢  因为函数声明的优先级高过变量声明   所以函数foo声明之后 变量foo属于重复声明而被自动忽略了
    */
  • 相关阅读:
    oracle 第12章 归档日志文件
    oracle 第09章 参数文件
    oracle 第11章 重做日志文件
    oracle 第10章 控制文件
    oracle 第14章 表空间管理
    linux yum源配置
    oracle 第08章 用户、权限、角色管理
    oracle 第07章 网络配置管理
    第二阶段冲刺-06
    第二阶段冲刺-05
  • 原文地址:https://www.cnblogs.com/tudou1223/p/9863163.html
Copyright © 2011-2022 走看看