【ES6】let、const关键字和解构赋值

简介: 【ES6】let、const关键字和解构赋值

es介绍


ES全称EcmaScript,是脚本语言的规范,而平时经常编写的JavaScript,是EcmaScript的一种实现,所以ES新特性其实指的就是JavaScript的新特性


为什么要学习新特性?


  1. 语法简洁,功能丰富


  1. 框架开发应用


  1. 前端开发职位要求


为什么要学习es6


  1. ES6 的版本变动内容最多,具有里程碑意义


  1. ES6加入许多新的语法特性,编程实现更简单、高效


  1. S6是前端发展趋势,就业必备技能


let关键字


let关键字与var关键字一样是用于声明变量的,只不过与var有以下不同之处:


变量不能重复声明


在es6中let关键字不允许重复声明变量,如下图所示就会报错Uncaught SyntaxError SyntaxError: Identifier 'name' has already been declared


  let name ='suliang';
  let name = 'xiaoming';


块级作用域


使用let在代码块中声明变量时,只在代码块中生效。


{
    var name = 'su'
    let age = 21;
}
console.log(name); //su
console.log(age); //ReferenceError: age is not defined


不存在变量提升


使用var关键字定义一个变量时,可以在定义变量之前输出该变量,数据类型为未定义,但使用let关键字定义变量时,不允许在声明变量前调用该变量。


console.log(age); //ReferenceError: Cannot access 'age' before initialization
let age = 21;


不影响作用域链


function fun1(){
     let num = 10;
     function fun2(){
         let num1 = num +15;
         console.log(num1);
     }
     return fun2();
 }
 fun1(); //25


let关键字小案例


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //let 案例
      window.onload = function(){
          let items = document.getElementsByClassName('item');
          for(let i = 0;i<items.length;i++){
              items[i].onclick = function(){
                  items[i].style.backgroundColor = 'yellow'
              }
          }
      }
    </script>
    <style>
        div{
            width: 150px;
            height: 80px;
            border: 2px solid lightblue;
            display: inline-block;
        }
    </style>
</head>
<body>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</body>
</html>


当使用for循环遍历元素时,使用var关键字声明变量i,则会报错:TypeError: Cannot read properties of undefined,因为此时var 声明的i并没有块级作用域,最后i的值为3,而item[3]不存在,因此就会报错。而用let可以解决这个问题。


window.onload = function(){
     let items = document.getElementsByClassName('item');
     for(var i = 0;i<items.length;i++){
         items[i].onclick = function(){
             items[i].style.backgroundColor = 'yellow'
         }
     }
 }



const关键字(声明常量)


在es6中怎加了对常量的声明方式,那就是用const关键字,其中使用const关键字,有以下特性。


声明时必须赋予初始值


在声明常量时必须赋予初始值,否则报错:SyntaxError: Missing initializer in const declaration


声明常量时尽量使用大写字母


const NAME = 'suliang';


常量的值不能被修改


常量的值一旦定义就不能被修改,否则报错:TypeError: Assignment to constant variable.


const NAME = 'suliang';
  NAME = 'xiaoming';


块级作用域


和let一样,const一样有块级作用域


{
    const AGE= 15;
}
console.log(AGE) 
//ReferenceError: AGE is not defined


对于数组/对象的元素来说,不算对常量的修改


const LIST = ['gala','xiaohu','wei','ming'];
LIST.push('breath');
console.log(LIST);
//(5) ['gala', 'xiaohu', 'wei', 'ming', 'breath']


解构赋值


在es6中可以将一个常量中的各个值赋给多个变量。


数组的解构赋值


const RNG = ['xiaohu','ming','gala'];
   let [a,b,c] = RNG;
   console.log(a); //xiaohu
   console.log(b); //ming
   console.log(c); //gala


对象的解构赋值


最常用的通常为对象的解构赋值,这样调用对象的方法时更简便。


//对象的解构赋值
const su = {
    name:'suliang',
    age : 21,
    sayName:function(){
        console.log(name)
    }
}
let {name,age,sayName} = su;
console.log(name); //suliang
console.log(age); //21
console.log(sayName); //ƒ (){console.log(name) }
 //调用对象方法
su.sayName(); //不适用解构赋值
sayName();  //使用解构赋值
目录
相关文章
|
JSON JavaScript 数据格式
Vue中 引入使用 vue-json-editor
Vue中 引入使用 vue-json-editor
2135 0
Vue中 引入使用 vue-json-editor
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
3709 2
|
9月前
|
移动开发 数据可视化 前端开发
tmagic - editor:大厂开源项目,零代码/低代码页面可视化编辑的利器,多端统一方案揭秘!如何用一套代码支持H5/PC,牛牛牛~~~
腾讯推出的开源项目 **tmagic-editor** 是一款所见即所得的页面可视化编辑器,支持H5、PC、TV等多种页面类型。它已应用于腾讯视频会员、腾讯会议等业务,每月生产和发布数百个页面,极大提高了开发效率。通过简单的拖拽和配置,非技术人员也能轻松创建复杂页面。tmagic-editor 支持 Vue2/Vue3 和 React 等多种前端框架,并提供了丰富的扩展功能,满足不同业务需求。
1046 3
Vue2时间轴(Timeline)
本文介绍了一个基于 Vue3 的时间轴组件 `Timeline`,允许用户自定义时间轴宽度和描述文本。通过在 `Timeline.vue` 中使用模板、脚本及样式代码,文章展示了如何创建并使用该组件,并提供了示例代码以供参考。
1176 2
Vue2时间轴(Timeline)
|
JSON JavaScript API
wangEditor 富文本详解(下)
wangEditor 富文本详解(下)
1578 0
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
Java 应用服务中间件 网络安全
微信公众号本地开发调试 - 无公网IP,内网穿透
微信公众号本地开发调试 - 无公网IP,内网穿透
740 0
|
开发工具 开发者
微信公众号网页开发本地授权、开发
在微信公众号进行网页开发时,有些授权操作和调用微信JSSDK的操作,通过微信开发工具和微信测试号,可以很方便的进行本地开发调试。相比于内网穿透工具进行真机调试就会方便很多
969 0
|
Java
Java中抽象类概述、特点、接口概述、特点及抽象类和接口的区别
抽象类概述、特点、接口概述、特点及抽象类和接口的区别的简单示例
203 0
Java中抽象类概述、特点、接口概述、特点及抽象类和接口的区别