JavaScript 中 let 的使用
在 ES2015 之前,JavaScript 只有两种类型的作用域:全局作用域和函数作用域。
- 全局(在函数之外)声明的变量拥有全局作用域,全局变量可以在 JavaScript 程序中的任何位置访问。
var carName = "porsche";// 此处的代码可以使用 carNamefunction myFunction() {// 此处的代码也可以使用 carName }
局部(函数内)声明的变量拥有函数作用域,局部变量只能在它们被声明的函数内访问。
// 此处的代码不可以使用 carNamefunction myFunction() {var carName = "porsche";// code here CAN use carName }// 此处的代码不可以使用 carName
在 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, 在块中重新声明变量不会重新声明块外的变量
使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。在 HTML 中,全局作用域是 window 对象。
通过 var 关键词定义的全局变量属于 window 对象:
var carName = "porsche"; // 此处的代码可使用 window.carName
通过 let 关键词定义的全局变量不属于 window 对象:
let carName = "porsche"; // 此处的代码不可使用 window.carName
在相同的作用域,或在相同的块中,使用 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; // 不允许 }
通过 var 声明的变量会提升到顶端。通过 let 定义的变量不会被提升到顶端。在声明 let 变量之前就使用它会导致 ReferenceError。
// 在此处,可以使用 carName var carName;
// 在此处,不可以使用 carName let carName;
JavaScript 中 let 的使用相关推荐
- 浅析 JavaScript 中的 函数 uncurrying 反柯里化
柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...
- JavaScript中,this的绑定规则
对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点. 比如下面的代码,this 指向就有三种方式. 在<你不知道的 JavaScript>一书中,我总算比较清 ...
- Javascript中undefined,NaN等特殊比较
以下内容转自: http://blog.csdn.net/hongweigg/article/details/38090093 1.问题:在Javascript中,typeof(undefined) ...
- Javascript中二进制数据处理方法
Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html
- JavaScript 中的有限状态机
http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机 Page navigation 系列文章 有限状态 ...
- 在Javascript中使用面向对象的编程
by Mike Koss March 26th, 2003 这是一篇,我个人认为最好的,Javascript面向对象编程的文章.翻译不好的地方,还望大家指正,谢谢. 如果您需要,可以访问下面的地址取得 ...
- 取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...
统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用.URL指定资源位置和检索资源的机制(http,ftp,mailto). 例如,这是此博客文章的URL: 通常,您需要访问URL的特 ...
- 在javascript中判断类型
String 一个字符串始终是一个字符串,所以这一块是很容易.除非使用new(new String)调用,否则typeof将返回"object".所以也要包含那些可以使用的字符串i ...
- JavaScript中几个重要的知识点(1) ---- 面向对象
JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象.面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 ...
- javascript中实例方法与类方法的区别
在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问,不需要声明类的实例来 ...
最新文章
- python3 爬虫第三步 本文包你学会正则 不会就来锤我
- 【RTMP协议分析与抓包实测】
- 华为鸿蒙麒麟玉兔_华为P50除了麒麟9000,还预装鸿蒙系统,比iPhone12值得买
- linux常用命令--开发调试篇
- 简单网络管理协议SNMP
- 我的偶像:Garfield 上映
- CSS和JS引用图片(资源)的路径问题
- python找不到指定的路径_[Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径...
- 2109-全国大学生电子设计竞赛-F-纸张数识别(内含arduino代码以及题解)
- C++中数据类型int, short, long, long long的数据范围
- arduino和单片机的区别是什么
- tidb-analyze
- C++20 实现字符串类型的转换操作
- 做埋线双眼皮术后会不会留下疤痕呢?
- 【Dubbo】序列化异常—— com.esotericsoftware.kryo.KryoException: Buffer underflow
- linux下USB3.0端口无法识别3.0设备
- 如何让AutoHotkey在大部分游戏中好用
- location指令
- 一些值得关注的云计算资源
- JavaScript入门3JS外置对象:Window、Document对象与DOM实例详解