zoukankan      html  css  js  c++  java
  • 作用域与变量提升

    作用域:对某个范围产生作用,外部不能访问内部变量,但内部可以访问外部变量

    var i = 0
    function outer() {
      console.log(i)//0  
    }
    

      

    function outer() {
      var i = 0
      console.log(i)//0  
    }
    console.log(i)//报错,外部不可访问内部
    

      

    变量提升:变量的声明被自动移动到了函数或全局代码的最顶上。函数声明可以写在任何地方,但是不能不写,不写报错

    function outer() {
      console.log(i)//报错,未被声明,
    }
    
    function outer() {
      console.log(i)//undefined变量提升是把声明提至最前面,即var i但是赋值=0还在原来位置
      var i = 0
    }
    
    function outer() {
      var i = 0
      console.log(i)//0
    }
    

      注意:var、function、function *和let、const、class的的提升却并不相同

    //声明的函数名和变量一致的情况下,分为两种
    //一:函数申明。function foo(){}这种形式,函数优先
    console.log(foo)//function foo(){}
    var foo = 'aa'
    function foo(){}
    
    //二:函数表达式。var foo=function(){}这种形式
    console.log(foo)//undefined
    var foo = 'aa'
    var foo = function(){}
    

      

  • 相关阅读:
    Html 回顾
    Parallel 并行编程
    Task---常用的多线程(基于多线程线程)
    Threadpool 可以对线程加以管理的封装
    AsyncThreads---异步多线程
    Abstract 封装,继承,多态
    IO&&Serize 利用线程Thread.Sleep实现"自动输出"
    Ling && Lambda
    Delegate&&Event
    Delegate &&Lambda
  • 原文地址:https://www.cnblogs.com/xiaobai1/p/10525785.html
Copyright © 2011-2022 走看看