JavaScript ES6学习之新增变量let

「爱情、让人受尽委屈。」 2022-11-09 14:23 231阅读 0赞

一、基本知识

let是JavaScript ES6中新增的一个用于声明变量 的关键字。
(1)特点:
①let只对变量所处的块级有效:(这里的块级就比如一个大括号)
例如:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>HOME</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. if(true){
  10. var userName = '崇志';
  11. let num = 100;
  12. }
  13. console.log(userName);
  14. console.log(num);
  15. </script>
  16. </body>
  17. </html>

在这里插入图片描述
从上图,我们可以发现:var和let初始化语句都在if{}内,而它们的执行语句都在if{}外,由于let只对变量所处的块级有效,所以只有var声明的userName执行了出来而let声明的num显示没有被定义到。

②let不存在变量提升
let必须要先声明才能使用。
例如:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>HOME</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. console.log(userName);
  10. let userName = '崇志';
  11. </script>
  12. </body>
  13. </html>

就会显示如下报错:应该先声明后执行。
在这里插入图片描述
③let具有暂时性死区特性
我们来看下面这段代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>HOME</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. var temp=12345;
  10. if(true){
  11. let temp = 'chongzhi';
  12. }
  13. console.log(temp);
  14. </script>
  15. </body>
  16. </html>

效果图如下:
在这里插入图片描述

我们发现:虽然有两个temp,但是最后执行的是第一个temp的值12345,这是因为let具有暂时性死区特性,第二个temp会和if{}整体进行绑定。

二、经典例题:
(1)输出i的值。

  1. var arr = [];
  2. for(var i = 0; i < 2; i++)
  3. arr[i] = function(){
  4. console.log('i='+i);
  5. }
  6. arr[0]();
  7. arr[1]();

代码执行效果图:

在这里插入图片描述

解决关键:变量i是全局的,函数执行输出的都是全局作用域下的值。

(2)输出i的值。

  1. let arr = [];
  2. for(let i = 0; i < 2; i++){
  3. arr[i] = function(){
  4. console.log('i='+i);
  5. }
  6. }
  7. arr[0]();
  8. arr[1]();

代码执行效果图:
在这里插入图片描述

解决关键:每一次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级循环产生的块级作用域下的i值。

发表评论

表情:
评论列表 (有 0 条评论,231人围观)

还没有评论,来说两句吧...

相关阅读

    相关 es6新增语法`${}`

    这是es6中新增的字符串方法 可以配合反单引号完成拼接字符串的功能 1、反单引号怎么打出来? 将输入法调整为英文输入法,单击键盘上数字键1左边的按键。 2、用法

    相关 ES6 关键字 let

    一、 关键字 let 正如大家都熟悉的,我们平时在写代码的时候,用var 声明一个变量,除此之外,也再没有接触到其它的关键字了,不管我们声明什么样类型得变量,都用var

    相关 ES6 const与let变量

    ES6 ES6([ECMAScript][] 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国