在 ES2015 之前,JavaScript 只有两种类型的作用域:全局作用域函数作用域

  1. 全局(在函数之外)声明的变量拥有全局作用域全局变量可以在 JavaScript 程序中的任何位置访问。

    var carName = "porsche";// 此处的代码可以使用 carNamefunction myFunction() {// 此处的代码也可以使用 carName
    }
  2. 局部(函数内)声明的变量拥有函数作用域局部变量只能在它们被声明的函数内访问。

    // 此处的代码不可以使用 carNamefunction myFunction() {var carName = "porsche";// code here CAN use carName
    }// 此处的代码不可以使用 carName
  3. 在 ES2015 之前,JavaScript 是没有块作用域的。从ES2015 开始可以使用 let 关键词声明拥有块作用域的变量。在块 { } 内声明的变量无法从块外访问:

    { let x = 10;
    }
    // 此处不可以使用 x

    简单例子来看下let和var的区别:

    //使用var
    var x = 10;
    // 此处 x 为 10
    { var x = 6;// 此处 x 为 6
    }
    // 此处 x 为 6, 在块中重新声明变量也将重新声明块外的变量
    /********************************/
    //使用let
    var x = 10;
    // 此处 x 为 10
    { let x = 6;// 此处 x 为 6
    }
    // 此处 x 为 10, 在块中重新声明变量不会重新声明块外的变量
  4. 使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。在 HTML 中,全局作用域是 window 对象。

    通过 var 关键词定义的全局变量属于 window 对象:

    var carName = "porsche";
    // 此处的代码可使用 window.carName

    通过 let 关键词定义的全局变量不属于 window 对象:

    let carName = "porsche";
    // 此处的代码不可使用 window.carName
  5. 在相同的作用域,或在相同的块中,使用 var 和let重新声明 JavaScript 变量遵循以下规则:

    {var x = 10;  // 现在,x 为 10var x = 6;   // 现在,x 为 6
    }{var x = 10;let x = 6;   // 不允许
    }{let x = 10;var x = 6;   // 不允许
    }{let x = 10;let x = 6;   // 不允许
    }
  6. 通过 var 声明的变量会提升到顶端。通过 let 定义的变量不会被提升到顶端。在声明 let 变量之前就使用它会导致 ReferenceError。

    // 在此处,可以使用 carName
    var carName;
    // 在此处,不可以使用 carName
    let carName;

JavaScript 中 let 的使用相关推荐

  1. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  2. JavaScript中,this的绑定规则

    对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点. 比如下面的代码,this 指向就有三种方式. 在<你不知道的 JavaScript>一书中,我总算比较清 ...

  3. Javascript中undefined,NaN等特殊比较

    以下内容转自: http://blog.csdn.net/hongweigg/article/details/38090093 1.问题:在Javascript中,typeof(undefined) ...

  4. Javascript中二进制数据处理方法

    Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

  5. JavaScript 中的有限状态机

    http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机 Page navigation 系列文章 有限状态 ...

  6. 在Javascript中使用面向对象的编程

    by Mike Koss March 26th, 2003 这是一篇,我个人认为最好的,Javascript面向对象编程的文章.翻译不好的地方,还望大家指正,谢谢. 如果您需要,可以访问下面的地址取得 ...

  7. 取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...

    统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用.URL指定资源位置和检索资源的机制(http,ftp,mailto). 例如,这是此博客文章的URL: 通常,您需要访问URL的特 ...

  8. 在javascript中判断类型

    String 一个字符串始终是一个字符串,所以这一块是很容易.除非使用new(new String)调用,否则typeof将返回"object".所以也要包含那些可以使用的字符串i ...

  9. JavaScript中几个重要的知识点(1) ---- 面向对象

    JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象.面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 ...

  10. javascript中实例方法与类方法的区别

    在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问,不需要声明类的实例来 ...

最新文章

  1. python3 爬虫第三步 本文包你学会正则 不会就来锤我
  2. 【RTMP协议分析与抓包实测】
  3. 华为鸿蒙麒麟玉兔_华为P50除了麒麟9000,还预装鸿蒙系统,比iPhone12值得买
  4. linux常用命令--开发调试篇
  5. 简单网络管理协议SNMP
  6. 我的偶像:Garfield 上映
  7. CSS和JS引用图片(资源)的路径问题
  8. python找不到指定的路径_[Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径...
  9. 2109-全国大学生电子设计竞赛-F-纸张数识别(内含arduino代码以及题解)
  10. C++中数据类型int, short, long, long long的数据范围
  11. arduino和单片机的区别是什么
  12. tidb-analyze
  13. C++20 实现字符串类型的转换操作
  14. 做埋线双眼皮术后会不会留下疤痕呢?
  15. 【Dubbo】序列化异常—— com.esotericsoftware.kryo.KryoException: Buffer underflow
  16. linux下USB3.0端口无法识别3.0设备
  17. 如何让AutoHotkey在大部分游戏中好用
  18. location指令
  19. 一些值得关注的云计算资源
  20. JavaScript入门3JS外置对象:Window、Document对象与DOM实例详解

热门文章

  1. 解析光纤跳线的5大知识点,让安装使用更顺畅
  2. 路径规划五种算法简述及对比
  3. 【Linux基础】Ubuntu 20.04系统安装(完整版)
  4. 【Jquery】Pjax的了解与应用
  5. 教我如何使用python编写一个界面
  6. 科技人文丨爱上陌生人的36个问题
  7. 短时傅里叶变换(STFT)实例
  8. CMD打开IIS,重启iis等
  9. dba怎么报考_深圳dba双证报考时间
  10. intern string java_聊聊java String的intern