• 变量提升(Hoisting)

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

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

      function fn() {
    console.log(x) // -> undefined
    var x = 2
    }
    // 等同于:
    function fn() {
    var x // 变量提升到函数最顶部
    console.log(x)
    x = 2 // 赋值的位置不变
    }
    1. let/const: 使用 let/const 定义变量是存在块级作用域({...})的,它同样存在变量提升,但是由于有临时死区的概念,导致变量在未初始化的时候是不能够使用的(所以看上去是没有变量提升的)
      function fn() {
    console.log(x) // 报错 -> Cannot access 'name' before initialization
    // var -> let 使得 x 存在临时死区,在未初始化之前是无法被使用的
    let x = 2
    }
    // 正确方式
    function fn() {
    let x = 2 // 定义并初始化
    console.log(x) // -> 2
    }
  • 变量的作用域

    var:只存在函数作用域和全局作用域
      // 使用 var 在函数外部定义变量,会提升到全局作用域
    var globalA = c
    function fn() {
    if(true) {
    // 会在函数顶部定义 a = undefind, 所以在下方的console.log中能够正常输出
    // 这里其实是 a = 1 赋值的步骤
    var a = 1
    } console.log(a) // -> 1
    }

    const/let: 局部作用域({ ... })

      console.log(curA) // -> Cannot access 'curA' before initialization
    // 只能在初始化后才能使用 curA
    const curA = 'ccc'
    console.log(curA) // -> 'ccc'
    function fn() {
    if(true) {
    console.log(a) // a is not defined
    }
    let a = 1
    }

最新文章

  1. 用PHPcms V9四步完成WAP手机站搭建
  2. Android学习笔记----TimerTask中显示Toast的问题
  3. bootstrap插件学习-bootstrap.typehead.js
  4. WPFの单例模式
  5. C# lock用法
  6. 【Hihocoder 1167】 高等理论计算机科学 (树链的交,线段树或树状数组维护区间和)
  7. javascript基础之变量和函数声明
  8. Android中常用的颜色
  9. 第九十节,html5+css3pc端固定布局,底部区域,说明区域,版权区域
  10. 重庆/北京/江苏KS/快乐时时/七星/福运来菠菜电商开奖修复APP网站SSC网站程序开发php
  11. es6中对象的类与继承方法
  12. Unique-paths (动态规划)
  13. Spring Boot Hikari
  14. codeForces 472D 最小生成树
  15. Linux通过NFS实现文件共享
  16. BZOJ.5251.[八省联考2018]劈配mentor(最大流)
  17. /etc/sysconfig/iptables 默认配置详解
  18. unity 背景无限循环滚动效果
  19. ASP.NET 工作流:支持长时间运行操作的 Web 应用程序
  20. 2018.11.01 NOIP训练 递增数列(迭代加深)

热门文章

  1. 【LeetCode】173. Binary Search Tree Iterator 解题报告(Python)
  2. DAGs with NO TEARS: Continuous Optimization for Structure Learning
  3. Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks
  4. IOS 如何获取app更新链接 如【itms-apps://itunes.apple.com/cn/app/id1362432761?mt=8】
  5. HTML网页设计中 link 和 @import 的区别
  6. exit hook
  7. From Hero to Zero
  8. python 面向对象:类方法&静态方法
  9. java mapreduce实现网站PV分析
  10. vue 图片拖拽和滚轮缩放