轻松学习 JavaScript:了解 let 语句
来源:互联网 发布:淘宝购物怎样返利 编辑:程序博客网 时间:2024/06/05 07:10
使用let语句,允许你在JavaScript中创建块范围局部变量。let语句是在JavaScript的ECMAScript 6标准中引入的。在你往下了解let语句之前,我建议你先查看基于Infragistics jQuery库的Ignite UI,它可以帮助你更快地编写和运行Web应用程序。你可以使用JavaScript库的Ignite UI来快速解决HTML5,jQuery,Angular,React或ASP.NET MVC中复杂的LOB需求。(你可以在这里下载Ignite UI的免费试用版。)
在ECMAScript 6之前,JavaScript有三种类型的范围:
- 全局范围
- 函数范围
- 词汇范围
为了详细探索let语句,请细想下面的代码段:
function foo() { var x = 9; if (x > 5) { var x = 7; console.log("Value of x in if statement = " + x); } console.log("Value of x outside if statement = " + x);}foo();
以上代码得到的输出:
在上面的代码中,我们使用var语句声明变量x。因此,变量x的范围是函数范围。if语句内的变量x 就是if语句外创建的变量x 。因此,在你修改if语句块内变量x的值时,也会修改函数中变量x的所有引用的值。
为了避免这种情况,你需要使用块级别范围,let语句允许你创建块范围的局部变量。
修改上面的代码片段,使用let语句声明变量:
function foo() { var x = 9; if (x > 5) { let x = 7; console.log("Value of x in if statement = " + x); } console.log("Value of x outside if statement = " + x);}foo();
在上面的代码段中,我们使用let语句来声明范围级局部变量x。因此,在if语句内更新变量x的值不会影响if语句外的变量x的值。
下面是上述代码的输出:
与使用函数范围(或全局范围)声明的变量不同,使用let声明的变量是块范围的:它们只存在于它们定义的块中。
变量提升
使用let声明的变量提升不同于使用var声明的变量。因此,使用let声明的变量没有变量提升,这意味着使用let声明的变量不会移动到执行上下文的顶部。
为了更好地理解这一点,请看以下这段代码:
function foo() { console.log(x); console.log(y); var x = 9; let y = 67;}foo();
作为输出,你将获得变量y的ReferenceError,变量y使用let语句声明。使用let声明的变量不会提升到执行上下文之上。
重新声明变量
你不能在同一个函数或块中使用let重新声明一个变量。这样做会出现语法错误。请看以下代码:
function foo() { if(true){ let x = 9; let x = 89; }}foo();
运行上面的代码会出来一个语法错误,如下所示:
块级范围界定是任何编程语言最重要的功能之一,并且随着ECMAScript 6中let语句的引入,JavaScript现在也有了这个功能。使用let语句,允许创建一个作用域在块范围内的变量。这可以解决许多问题,例如全局范围变量的意外修改,闭包中的局部变量,以及帮助编写更清晰的代码。
阅读全文
0 0
- 轻松学习 JavaScript:了解 let 语句
- 轻松学习 JavaScript(1):了解 let 语句
- 轻松学习 JavaScript——第 1 部分:了解 let 语句
- 轻松学习 JavaScript——第 1 部分:了解 let 语句
- 轻松学习JavaScript七:JavaScript的流程控制语句
- 轻松学习JavaScript七:JavaScript的流程控制语句
- 怎么轻松学习JavaScript
- 怎么轻松学习JavaScript
- 怎么轻松学习JavaScript
- 怎么轻松学习JavaScript
- 怎么轻松学习JavaScript
- 轻松学习JavaScript
- 轻松学习JavaScript一:为什么学习JavaScript
- 轻松学习JavaScript一:为什么学习JavaScript
- JavaScript中用let语句声明作用域的用法讲解
- 轻松学习JavaScript八:JavaScript函数
- 轻松学习JavaScript八:JavaScript函数
- 轻松学习python part2-控制语句
- java基础之持有对象
- 人工智能之搜索方法
- spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
- mt2503 [MAKE]加入BT switch机制后,makefile文件的变化
- windows平台使用Microsoft Visual C++ Compiler for Python 2.7编译python扩展
- 轻松学习 JavaScript:了解 let 语句
- Cordova App 打包全揭秘
- bash: /etc/profile: line 11: `pathmunge () {
- vs 2017 include<Pthread.h>无法打开源文件
- wampserver环境下配置虚拟域名
- C++常对象,常变量,常成员函数详解
- 摘录机器学习的基本知识以及学习路线
- JavaWeb笔记之数据源连接池
- NASA无人机障碍赛:专业选手Vs.人工智能,赌一赌谁赢?