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

     

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

     

  • 相关阅读:
    Windows CA 证书服务器
    IE7的web标准之道
    mysql 密码重置
    IIS 与 Apache共存
    php 正则表达式
    sql 记录
    [ Python ] 迭代对象、迭代器、生成器
    [ Python ] 文件的读写操作
    [ Python ] 匿名函数和高阶函数
    [ Python ] set集合及函数的使用
  • 原文地址:https://www.cnblogs.com/jingxuan-li/p/14722808.html
Copyright © 2011-2022 走看看