ES6新语法

简介: ES6新语法

1.let


1.1 let命令的作用域只局限于当前代码

<script>
  {
    let a =10;
    var b = 1;
  }
  console.log(a); // error
  console.log(b);
</script>

1.2 let 声明的变量作用域不会被提前

console.log(a); // 输出undefined
var a = 10;
console.log(b); // error
let b = 1;


1.3 在相同作用域下,不能声明相同的变量

// 报错
function func(){
  let a= 0;
  var a = 0;
}
// 报错
function func(){
  let a = 1;
  let a = 2;
}
// 报错
function func(arg){
  let arg = 0;
}
// 不报错
function func(arg){
  {
  let arg = 2;
  }
}

1.4 for 循环中let的父子作用域

<!DOCTYPE html>
<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>
</head>
<body>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
</body>
<script>
    var btns = document.querySelectorAll('button');
    for(var i=0; i<btns.length; i++){
        btns[i].onclick = function(){
            console.log('这是第'+ i +'个按钮');
        }
    }
</script>
</html>


2、const


const表示声明一个常量。他和let的特点一样,主要区别是常量。


  1. const变量在声明时需要赋值。


  2.声明后变量的指针地址不能变,但是指向的数据结构内容可以改变。对于简单数据类型就是值       不能变。对于对象类型则是指指针不能变。


3、解构


3.1 什么是解构

       解构赋值可以理理解为赋值操作的语法糖,它是针对数组或者对象进⾏行行模式匹配,然后对其中的变量进行赋值。代码书写上⾔简意赅,语义明确,也方便了对象数据的读取操作。


解构不同的数据类型,解构的语法会略有不同。数组解构用的是[],对象解构用的是{}


但是解构的默认值,和别名语法是一样的。


3.2 数组解构

{
        let a,b,c; // 声明
        [a,b,c] = [1,2,3]; // 解构赋值,数据的解构使用[],
        console.log(a,b,c) // 1 2 3
    }
    {
        let [a,b,c] = [1,2,3]; // 声明并解构赋值
        console.log(a,b,c) // 1 2 3
    }
    {
        let [a,,b] = [1,2,3] // 赋值是按照位置顺序指定的,使用,占位符
        console.log(a,b) // 1 3
    }
    {
        let [a,b=2,c=3,d] = [1,22] // 给b设置一个默认值,默认值会被赋值操作覆盖
        console.log(a,b,c) // 1 22 3
    }
    {
        let [a,...other] = [1,2,3]; // 数组分割
        console.log(a,other) // 1 [2 3]
    }


3.3 对象解构

{
    let a,b;
    ({a,b} = {a:1,b:2}); // 对象解构使用的{}
    console.log(a,b);
}
{
    let {a,b} = {b:2,a:1}; // 对象中赋值的对应关系使用的是键值,和顺序无关
    console.log(a,b);
}
{
    let {a:num1,b:num2} ={a:1,b:2} // 当对象中的键值和变量名称不一致的时候,可以使用别名
    console.log(num1,num2);
}
{
    function func() {
        return {
            schoolname: '学校名称',
            classlist: [{
                    classname: '班级1',
                    count: 10
                },
                {
                    classname: '班级2',
                    count: 11
                }
            ]
        }
    }
    // 解构复杂数据类型
    let {
        schoolname: myschoolname,
        classlist: [{
            classname: myclassname1
        }, {
            classname: myclassname2
        }]
    } = func();
    console.log(myschoolname, myclassname1, myclassname2);
}


4、字符串方法扩展


{
    let str = '123name321';
    console.log(str.includes('name')); // 判断是否包涵name
    console.log(str.startsWith('123')); // 判断是否以123开头
    console.log(str.startsWith('name',3)); // 判断从第4位开始,是否以name开头
    console.log(str.endsWith('321')); // 判断是否以321结尾
    console.log(str.endsWith('name',7)); // 判断第7位以前,是否以name结尾
    console.log(str.repeat(2)); // 重复字符串2次
    console.log(str.padStart(13,'abcd')) // 头部补全,补全到13位
    console.log(str.padEnd(13,'abcd')) // 尾部补全,补全到13位
}


5、字符串模板


     在之前的语法中,在字符串中拼接带变量的字符串会比较麻烦,所以引入了字符串模板。


{
    let name='youyou';
    let age=18;
    let str = `我叫${name},    今年${age}岁`; // 注意空格和回车会原样输出
    console.log(str)
}

相关文章
|
存储 缓存 算法
存储管理
一、存储管理 存储管理是操作系统中的一个核心功能,它负责管理计算机系统中的主存储器(内存)和辅助存储器(硬盘、光盘等)等存储设备,为进程提供存储空间和管理存储资源。存储管理的主要任务包括以下几个方面: 1. 内存分配:操作系统需要为进程分配内存空间,以便进程可以存储和执行程序。内存分配可以采用静态分配或动态分配的方式,静态分配是在编译时确定分配的内存空间大小,动态分配是在运行时根据进程的需求动态分配内存空间。 2. 内存保护:操作系统需要保护进程的内存空间,防止进程之间相互干扰或访问非法内存区域。内存保护可以采用硬件保护或软件保护的方式,硬件保护是通过硬件机制实现内存隔离和保护,软件保护是通过
1706 0
|
5月前
|
运维 搜索推荐 数据可视化
阿里云我的世界(MC)服务器一键部署攻略教程:零基础几分钟搭建专属联机世界
《我的世界》(Minecraft)的魅力在于和好友共建独一无二的虚拟世界,而家用宽带搭建服务器往往受内网限制、延迟高、稳定性差等问题困扰。2026年阿里云基于**计算巢**平台推出了MC服务器专属一键部署方案,彻底打破技术壁垒,无需任何编程基础和服务器配置经验,几分钟就能完成开服,还完美支持Java版/基岩版双版本、热门整合包一键启用和个性化参数自定义,搭配10M固定带宽起步的BGP多线接入,实现7×24小时低延迟稳定运行。无论是学生党和好友的小型联机局,还是资深玩家的大型模组整合服,都能通过这份教程轻松搭建专属MC世界,全程可视化操作,新手也能秒变服主。
1909 0
|
6月前
|
弹性计算 小程序 应用服务中间件
阿里云新用户和老用户最新活动参考:免费试用、云服务器特惠与优惠券相关活动介绍
2026年阿里云为新老用户提供丰富多样的优惠活动,覆盖了云服务器特惠、优惠券、免费试用等多种活动。本文为大家整理汇总了阿里云目前的各类优惠活动与政策,特别是针对新用户的专属福利,以供大家上云之前参考。
725 9
|
6月前
|
数据采集 人工智能 搜索推荐
大模型入门指南:从看懂原理到动手微调,一步步打造你的专属AI
本文深入浅出地讲解大模型核心技术:从Token、Embedding到上下文窗口,揭秘AI如何理解语言;通过提示词工程、RAG与微调,教你打造专属智能助手。零基础也能学会,让AI真正为你所用,开启个性化智能时代。
1500 1
|
监控 调度 DataX
DataX教程(08)- 监控与汇报
DataX教程(08)- 监控与汇报
1542 0
DataX教程(08)- 监控与汇报
|
Java Apache C++
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
Thrift 是一个轻量级、跨语言的远程服务调用框架,由 Facebook 开发并贡献给 Apache。它通过 IDL 生成多种语言的 RPC 服务端和客户端代码,支持 C++、Java、Python 等。Thrift 的主要特点包括开发速度快、接口维护简单、学习成本低和多语言支持。广泛应用于 Cassandra、Hadoop 等开源项目及 Facebook、百度等公司。
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
|
存储 网络协议 安全
网络编程:TCP socket
网络编程:TCP socket
691 0
|
监控 网络协议 安全
视频监控网络与IPv6
【10月更文挑战第23天】物联网的三大层次中,感知层至关重要,尤其在视频监控领域。随着视频监控数据量激增,IPv4地址资源逐渐枯竭,IPv6凭借其庞大的地址空间、更小的路由表、IP层安全等优势,成为替代IPv4的理想选择。然而,IPv6的推广仍面临NAT技术依赖、过渡难度大、安全性挑战及经济成本高等问题。尽管如此,IPv6的广泛应用是大势所趋,未来将为视频监控网络带来更高效、更安全的体验。
453 3
|
存储 监控 数据可视化
【日志系统】Loki日志监控 - 入门初体验
由于需求对日志进行监控,但是日志又很大,不能直接通过流的方式直接将text读取出来,可以使用grafana+loki+promtail搭建一个轻量级的日志系统,部署也简单方便。grafana提供可视化展示日志,然而loki是存储日志和处理查询,Promtail相当于loki的代理,收集日志发给loki。
1691 0
【日志系统】Loki日志监控 - 入门初体验