【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();  //使用解构赋值
目录
相关文章
|
6月前
|
JavaScript
ES6之变量的解构赋值
ES6之变量的解构赋值
|
6月前
|
JSON JavaScript 前端开发
ES6 变量的解构赋值
ES6 变量的解构赋值
|
11天前
es6变量声明与解构赋值
ES6的变量声明与解构赋值特性使得代码更加简洁、清晰,提高了开发效率和代码的可读性,在实际开发中被广泛应用。
ES6学习(2)解构赋值
ES6学习(2)解构赋值
|
2月前
ES6解构赋值
本文介绍了ES6中解构赋值的用法,包括对象和数组的解构,展示了如何从复杂数据结构中提取需要的变量,以及使用重命名和嵌套解构来简化代码。
35 0
ES6解构赋值
|
5月前
|
JSON JavaScript 前端开发
ES6 解构赋值详解
ES6是JavaScript语言的一次重大更新,引入了许多新特性和语法改进,其中解构赋值是一个非常实用和灵活的语法特性。它可以让我们从数组或对象中提取值,并赋给对应的变量,让代码变得更加简洁和易读。本文将深入探讨ES6解构赋值的语法、用法及其在实际开发中的应用。
191 58
ES6 解构赋值详解
|
3月前
es6 的解构赋值
【8月更文挑战第22天】
20 3
|
4月前
ES6 解构赋值【详解】
ES6 解构赋值【详解】
27 0
|
JavaScript 前端开发 网络架构
ES6 解构赋值
ES6 解构赋值
85 0
|
11月前
ES6学习(二)—变量的解构赋值
ES6学习(二)—变量的解构赋值