【学习笔记50】ES6的新增属性1

news2024/11/27 16:28:52

一、ES6

     *  ES6 
     *      其实就是JS发展过程中的某一个版本而已, 那个版本的版本号叫做ES6
     *  JS
     *      在最初的时候, 是只有var关键可以声明变量
     *      随着版本的更新, 在某一个版本内推出了新的变量声明方式
     * 
     *  JS的更新
     *      在推出ES6的时候, 这个版本推出的新东西比较多
     *      所以后续程序员们为了方便记忆, 把ES6以后的版本统称为 ES6+

二、let与const

  • ES6新增两种变量声明的方式,语法和var一样
  • 语法:let 变量名 = 值
  • 语法:const 变量名 = 值
        var a = 1;
        let b = 2;
        const c = 3;
        console.log(a, b, c);

1、let/const 与 var 的差异

     *  let/const 与 var 的差异
     *      1. let/const声明的变量不允许出现重复的
     *          * 使用var声明变量的时候可以出现重复声明, 后一个值会覆盖前一个值
     *          * let/const不允许
     *      2. let/const声明的变量没有变量提升
     *          * var关键字声明的变量有变量提升, 值为undefined
     *          * let/const不允许
     *      3. let/const声明的变量, 会受限于所有的{}
     *          * 也就是使用let/const声明的变量是块级作用域
     *          * var 声明的变量只受限于函数内部
     * 
     *  let 与 const 的差异
     *      1. let 声明的叫做变量(后续可以修改内部的值); 
     *         const 声明的叫做常量(后续不能修改内部的值, 也不能修改内部的引用地址)
     *      2. 因为 let 后续可以修改变量的值, 所以他首次定义时, 可以不赋值;
     *         但是 const 声明的时常量, 后续不能重新修改他的值, 所以首次定义时, 必须赋值

1. let/const不允许重复声明

        var a = 1;
        var a = 2;
        console.log(a);
        let b = 1;
        let b = 2;        //报错
        console.log(b)
        const c = 1;
        const c = 2;      //报错
        console.log(c);

2. let/const声明的变量没有变量提升

        console.log(a);
        var a = 100;      // undefined
        let a = 100;      // 报错
        const a = 1000;   // 报错

3. 块级作用域

        if (true) {
            var a = 1
            let b = 2
            const c = 3
        }
        console.log(a);
        console.log(b);
        console.log(c);
        for (var i = 0; i <= 1; i++) {
            var a = 1
            let b = 2
            const c = 3
        }
        console.log(a);
        console.log(b);
        console.log(c);

在这里插入图片描述

4. let与const的差异

  • let声明的叫做变量(后续可以修改内部的值);
  • const 声明的叫做常量(后续不能修改内部的值, 也不能修改内部的引用地址)
        let a = 1;
        a = 10;
        console.log(a);   // 10

        const b = 200;
        b = 2000;
        console.log(b);    // 报错
  • 因为let后续可以修改变量的值, 所以他首次定义时, 可以不赋值;
  • 但是const 声明的时常量, 后续不能重新修改他的值, 所以首次定义时, 必须赋值
        let a;
        a = 100;
        console.log(a);    // 100

        const b;   //报错

5. 课堂练习

5.1 案例一

        let obj = {
            name: 'QF666'
        }
        obj.name = 'QF999'
        console.log(obj.name);

在这里插入图片描述

        const obj1 = {
            name: 'QF001'
        }
        obj1.name = 'QF002'
        console.log(obj1);

在这里插入图片描述

例题分析:

  1. const声明的变量不能修改内部的值和引用的地址
  2. 用const声明一个常量,obj内部存储了一个地址XF001
  3. 给XF001内部属性name重新修改了一个值

这样的才报错

        const obj1 = {
            name: 'QF001'
        }

        obj1 = {
            name: 'QF002'
        }
        console.log(obj1)    // 报错

5.1 案例二

        // 作用的是全局变量
        for (var i = 0; i < 5; i++) {
            setTimeout(function () {
                console.log(i);
            }, 0)
        }

在这里插入图片描述

        // 作用的是块级作用域
        for (let i = 0; i < 5; i++) {
            setTimeout(function () {
                console.log(i);
            }, 1000)
        }

三、箭头函数

  • 就是对ES5普通函数的写法上的一个优化
  • 普通写法: (书写形参) => {书写函数调用时执行的代码}
        // ES5函数定义
        function fn() {}
        const fn1 = function () { }

        // ES6箭头函数
        const fn2 = () => {
            console.log('我是fn2箭头函数')
        }
        fn2()

1. 箭头函数的优化

1. 箭头函数如果只有一个形参的时候, 可以不写前边的小括号(除此之外, 必写)

       const fn3 = (a) => {
            console.log(a)
        }

优化

        const fn3 = a => {
            console.log(a);
        }
        fn3(100)

        const fn4 = (a, b) => {
            console.log(a + b);
        }
        fn4(10, 20)

2. 如果箭头函数的函数体, 只有一行代码, 那么可以省略 大括号(并且会默认将这行代码return)

        const fn5 = (a, b) => {
            return a + b
        }

优化

        const fn5 = (a, b) => a + b
        let sum = fn5(100, 200);
        console.log(sum);

2. 箭头函数与普通函数的区别

2.1 箭头函数内部没有this; 所以他的this取决于书写的时候

        function fn1() {
            console.log(this);
        }
        fn1()    // this === window


        const fn2 = () => {
            console.log(this);
        }
        fn2()

在这里插入图片描述

        var obj = {
            a: 1,
            b: '我是对象obj',
            fn1: function () {
                console.log(this);
            },
            fn2: () => {
                console.log('我是箭头函数的this:', this);
            }
        }

        obj.fn1()      // this === obj
        obj.fn2()

在这里插入图片描述

2.2 箭头函数内部没有arguments对象

        function fn(a, b, c, d, e) {
            console.log(arguments);
        }
        fn(1, 2, 3, 400, 500);

在这里插入图片描述

        const fn1 = () => {
            // 箭头函数内部没有arguments,所以这里打印会报错
            console.log(arguments);
        }
        fn1(999, 123, 456);

四、解构赋值

快速从数组或对象中取出成员的一种语法

1、数组

1.1 ES5拿到数组所有成员的方法

        var arr = [1, 2, 3];

        // ES5拿到数组所有成员的方法
        var num1 = arr[0];
        var num2 = arr[1];
        var num3 = arr[2];
        console.log(num1, num2, num3);

1.2 ES6解构赋值

        var arr = [1, 2, 3];
        console.log(arr);

        // ES6解构赋值, 解构数组时, 赋值号左边必须写中括号, 代表数组的解构赋值
        let [num1, num2, num3] = arr;
        console.log(num1, num2, num3);

在这里插入图片描述

2、对象

2.1 ES5拿到对象所有成员的方法

        var obj = {
            a: 11,
            b: 21,
            c: 31
        }
        console.log(obj);

        // ES5 拿到对象所有成员的方法
        var obj1 = obj.a;
        var obj2 = obj.b;
        var obj3 = obj.c;

        console.log(obj1, obj2, obj3);

在这里插入图片描述

2.2 ES6解构赋值

  • ES6解构赋值, 解构对象时, 赋值号左边 必须写大括号, 代表对象的解构赋值
  • 大括号内部必须书写对象的key
        var obj = {
            a: 11,
            b: 21,
            c: 31
        }
        console.log(obj);

        let { a, b, c } = obj;
        console.log(a, b, c);

在这里插入图片描述

五、展开(扩展)运算符

  • 语法: …数组(对象)
  • 作用: 展开数组或者对象,相当于把数组两侧包裹的中括号去掉

1、数组

        var arr = [1, 2, 3, 4, 5];
        console.log(arr);
        console.log(...arr);

在这里插入图片描述

        var arr = [1, 2, 3];
        var arr1 = [...arr, 100, 200, 300];
        console.log(arr);
        console.log(arr1);

在这里插入图片描述

        var arr = [1, 2, 3];
        function fn(a, b, c) {
            console.log(a, b, c);
        }
        console.log(arr);
        fn(arr, 100, 200);

在这里插入图片描述

2、对象

JS不支持这样的写法

        var obj = {
            a: 1,
            b: 2
        }
        console.log(obj);
        console.log(...obj);   //报错

在这里插入图片描述

        var obj = {
            a: 1,
            b: 2
        }
        console.log(obj);
        // console.log(...obj)  // JS 不支持这样的写法

        var obj1 = {
            ...obj,
            c: 3,
            d: 4
        }
        console.log(obj1);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计高校教材网上征订系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

SQL关键字详解

当前市场中&#xff0c;数据库在互联网整个技术链中的重要性是亘古不变的&#xff0c;站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互&#xff0c;而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言&#xff0c;甚至有…

临近期末,这些题不来看看吗?(上)

目录 1、在屏幕上输入9*9乘法表 2、输入一个值&#xff0c;打印对应的乘法口诀表 3、求十个整数的最大值 4、分数求和&#xff1a;计算1/1 - 1/2 1/3 - 1/4 1/5 ... 1/99 - 1/100&#xff08;3种方法&#xff09; 5、编写程序数一下&#xff0c;1到100的所有整数中出现多…

ggrcs 包2.4绘图实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了&#xff0c;大概几个月了吧&#xff0c;收到不少好评&#xff0c; 没听说太大的问题&#xff0c;最主要的问题有两个&#xff1a; 1.是说变量不是数字变量。 2.是说数据超过10万&#xff0c;无法处理 第一个问题非常好处理&#xff0c;这…

【精品】k8s的存储PV与PVC详解

概述 PV(Persistent Volume)一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。 PVC(Persistent Volume Claim)是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的一种资源需…

vscode开发maven的javaweb项目,并部署到tomcat及配置

1、安装并配置JAVA环境 我的是用的jdk1.8.0_181&#xff08;安装自行解决&#xff0c;直接可以下载免安装配置环境&#xff09; 配置JAVA_HOME&#xff0c;设置路径为C:\Program Files\Java\jdk1.8.0_181, 添加bin到path环境变量&#xff1a; 2、安装Maven 1&#xff09;官网…

垃圾分类小程序系统毕业设计,垃圾分类小程序系统设计与实现,垃圾分类系统毕设参考

功能清单 【管理员功能】 会员管理&#xff1a;查看网站所有注册会员信息&#xff0c;支持删除 资讯录入&#xff1a;录入资讯标题、时间、资讯内容等 管理资讯&#xff1a;查看现有资讯列表&#xff0c;支持修改和删除功能 留言管理&#xff1a;查看小程序留言列表&#xff0…

Azide PEG2 Pyrene|2135330-58-2|Pyrene标记的PEG连接物

Pyrene-PEG2-azide是一种含有叠氮化物基团的Pyrene标记的PEG连接物&#xff0c;它可以用任何含炔分子进行点击化学标记&#xff0c;从而将任何分子转化为含Pyrene的探针。亲水性PEG连接剂可以增加水溶液中生物分子的溶解度并促进其附着。 西安凯新生物科技有限公司azide系列产品…

Python人工智能学习路线(万字长文)

前言 随着全球市场的饱和&#xff0c;以及模式创新的用尽&#xff0c;传统的互联网产业已经进入成熟阶段&#xff0c;不会再有突飞猛进的发展。 &#xff08;文末送读者福利&#xff09; 接下来&#xff0c;是人工智能和大数据展露锋芒的时候了&#xff0c;它们在未来 10 年…

欧拉公式-上帝创造的公式

欧拉公式&#xff1a; &#xff08;1&#xff09;分式里的欧拉公式&#xff1a;   a&#xff3e;r/(a-b)(a-c)b&#xff3e;r/(b-c)(b-a)c&#xff3e;r/(c-a)(c-b)   当r0,1时式子的值为0   当r2时值为1   当r3时值为abc   &#xff08;2&#xff09;复变函数论里的…

firefly3399专题1-uboot2022.10的移植

硬件信息&#xff1a; friefly3399一块&#xff0c;2GB内存/16Gemmc。 软件信息&#xff1a; ubuntu18.04虚拟机&#xff0c;内部有firefly的SDK包。 参考资料&#xff1a;[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot&#xff08;基于v2022.04-rc5版本&#xff09;_Neution…

数据库变更管理:Liquibase or Flyway

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理&#xff1a;Li…

ZMQ/ZeroMQ的三种消息模式

一、 Reuqest-Reply(请求-应答模式) 1、使用Request-Reply模式&#xff0c;需要遵循一定的规律。 2、客户端必要先发送消息&#xff0c;在接收消息&#xff1b;服务端必须先进行接收客户端发送过来的消息&#xff0c;在发送应答给客户端&#xff0c;如此循环 3、服务端和客户端…

RabbitMQ(基于AMQP的开源消息代理软件)

一、AMQP高级消息队列协议 &#xff08;1&#xff09;介绍 AMQP&#xff0c;即Advanced Message Queuing Protocol&#xff0c;一个提供统一消息服务的应用层标准高级消息队列协议&#xff0c;是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计。基于此协议的客…

图神经网络关系抽取论文阅读笔记(四)

1 GDPNet:用于关系提取的潜在多视图图的精炼(GDPNet: Refining Latent Multi-View Graph for Relation Extraction) 论文&#xff1a;GDPNet: Refining Latent Multi-View Graph for Relation Extraction&#xff0c;2021 1.1 引言 由于基于 BERT 等序列模型与基于图模型算法是…

模块首页UX交互升级,接口测试支持禁用本地执行,MeterSphere开源持续测试平台v2.4.0发布

2022年11月28日&#xff0c;MeterSphere一站式开源持续测试平台正式发布v2.4.0版本。 在这一版本中&#xff0c;MeterSphere在测试跟踪和接口测试模块中对首页进行了UX交互升级&#xff0c;将部分指标进行了饼图、柱状图的展示优化&#xff0c;同时根据社区用户的实际使用反馈…

计算机毕业设计【HTML+CSS+JavaScript服装购物商城】毕业论文源码

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

JS进阶第二篇:函数参数按值传递

文章目录函数参数按值传递按值传递引用传递&#xff1f;应用函数参数按值传递 按值传递 在 JavaScript 中&#xff0c;我们有函数以及传递给这些函数的参数。但是 JavaScript 对如何处理你传递的内容并不总是很清楚。当你开始进入面向对象开发的时候&#xff0c;你可能会发现…

【Hack The Box】Linux练习-- Shibboleth

HTB 学习笔记 【Hack The Box】Linux练习-- Shibboleth &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#…

3.8 如何在小红书上蹭热点,这里有8个方法【玩赚小红书】

在小红书究竟能不能蹭到热点?有哪些热点可以蹭?怎么蹭?是很多小红书运营者关心的问题。在我看下&#xff0c;小红书热点分为官方热点、事件热点和账号热点三类&#xff0c;用好这8个方法&#xff0c;让笔记获得更多流量。 ​ ​ 一、官方热点 官方热点是小红书推出&#x…