zoukankan      html  css  js  c++  java
  • js高级-提升

    变量和函数声明都会在任何代码被执行前首先被处理。
    变量和函数声明从它们在代码中出现的位置被‘移动’到了最上面,这个过程叫作提升。(js解释器在执行js代码之前,会有个编译过程,编译器会把声明部分提升到当前作用域的最上方,这个过程叫作提升)

    1.提升注意事项

    • 只有声明会提升,赋值和其他运行逻辑留在原地
    • 每个作用域都会进行提升操作
    • 函数声明会被提升,但函数表达式不会被提升
    • 即使是具名的函数表达式,名称标识符在赋值之前也无法在所在作用域使用
    foo()  //TypeError
    bar()  //ReferenceError
    var foo = function bar(){
    	//......
    }
    
    
    

    上述代码提升后可理解成如下:

    var foo;
    foo();
    bar();
    foo = function(){
    	bar bar = ...self...
    	//...
    }
    
    
    • 函数优先于变量(当由多个重复声明的代码)
    foo();
    var foo;
    function foo(){
    console.log(1);
    }
    foo = function(){
    console.log(2);
    }
    //输出1
    提升后
    -----------
    
    function foo(){
    console.log(1);
    }
    foo();
    foo = function(){
    console.log(2)
    }
    //var foo由于是重复的声明,因此被忽略了。但是出现在后面的函数声明还是可以覆盖前面的。
    
    

    重复声明会导致各种问题,因此要避免这种情况。

  • 相关阅读:
    洛谷P1514引水入城
    洛谷P2827蚯蚓
    外部排序总结
    桶排序
    基数排序
    计数排序
    搜索文件-读目录的使用
    堆排序
    甲乙用同一串数字玩游戏
    Cracking the Coding Interview 8.7
  • 原文地址:https://www.cnblogs.com/tingshu/p/15221115.html
Copyright © 2011-2022 走看看