zoukankan      html  css  js  c++  java
  • JavaScripts之变量作用域提升问题

    备注:const、let 不存在变量提升问题

    1、变量提升(Hoisting)

      使用var在函数或全局内任何地方声明变量相当于在其内部最顶上声明它,这种行为称为Hoisting(提升)

          注意:变量赋值的位置不会改变

    function fn() {
       console.log(x) // -> undefined
       var x = 2  
    }
    // 等同于:
    function fn() {
    var x // 变量提升到函数最顶部
    console.log(x)
    x = 2 // 赋值的位置不变
    }

    2. 变量作用域:

        ·var 变量在函数内部声明,函数中任何位置都能够访问到,不存在 块级 作用域

        ·如果定义在函数外部,则会提升成为全局变量

        2.1>定义在函数内:

    function fn() {
     console.log(a) // undefined
     console.log(x) // undefined
      var x = 3
      if(x === 3) {
        var a = 6
      }
     console.log(a) // 6
     console.log(x) // 3
    }
    // 等同于下方的方法
    function fn() {
      var x
      var a
     console.log(a) // undefined
     console.log(x) // undefined
      x = 3
      if(x === 3){
        a = 6
      }
     console.log(a) // 6
     console.log(x) // 3
    }
    

      2.2> var定义变量在函数外部:

    // test.js
    var str = 6
    
    // text.html
    // ......
    <script src="./test.js" />
    // ......
    
    // 在浏览器控制台的 console 中输入
    str // -> 6
    

      个人站点: devloper.top

     

    -- 自己打败自己是最可悲的失败,自己战神自己是最可贵的胜利 --.

     

  • 相关阅读:
    进程 线程 协程
    TCP的滑动窗口和网络拥塞控制
    Golang中函数结构体,将函数转换为接口
    go的调度 与 go 的GC
    未来程序员这个工种会如何进化与“35岁之殇”的思考
    golang 实现 LRU
    golang 单例模式实现
    内存泄露及内存溢出,解决方案
    Jvm调优参数
    HttpUtil
  • 原文地址:https://www.cnblogs.com/jingxuan-li/p/14722808.html
Copyright © 2011-2022 走看看