【ES6丨前端进阶基础 】二,ES6rest参数,Symbol第七种数据类型

news2025/1/22 16:12:26

CSDN话题挑战赛第2期
参赛话题:面试宝典

目录​​​​​​​

前言

一,函数参数的默认值设置

二,rest参数

三,扩展运算符

扩展运算符应用

1.合并数组

2.数组的克隆

3.伪数组转化成真正的数组

四,Symbol第7种数据类型

1.七种数据类型

 2.Symbol特点

3.Symbol的使用

4.如何给对象添加Symbol方法

五,迭代器

1.什么是迭代器?

2.迭代器的应用 ​​​​​​​

写在最后


前言

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

一,函数参数的默认值设置

es6允许赋初始值 形参初始值具有默认值的参数,一般位置要靠后(不成文规定)

    <script>
        // 1.es6允许赋初始值 形参初始值具有默认值的参数,一般位置要靠后(不成文规定)
        // 这里参数不能给第一个赋初始值 否则返回值就是NaN
        function even(d, e, f = 10) {
            return d + e + f;
        }
        let result = even(6, 8);
        console.log(result);
        // 2.与解构赋值结合
        function cont({ names = 'ZHUZHUXIA', sex, school }) {
            console.log(names);
            console.log(sex);
            console.log(school);
        }
        cont({
            // 如果不进行传参那么最后的返回值就会是默认值;
            // names: 'shanyu',
            sex: 'man',
            school: 'HER',
        })
    </script>

​​​​​​​

二,rest参数

引入rest参数代替了argument

    <script>
        // es6引入rest参数,用于获取函数的实参,代替了argument
        // rest参数 返回值为数组
        function date(...args) {
            console.log(args);
        }
        date('SHANYU', 'UZI', 'XAIOMO');
        // 注:rest参数必须放到最后
        function fn(a, b, c, ...args) {
            console.log(a);
            console.log(b);
            console.log(c);
            console.log(args);
        }
        // args的实参就是5678
        fn(1, 3, 4, 5, 6, 7, 8);
    </script>

三,扩展运算符

扩展运算符将数组转化为参数序列用逗号分割开

    <script>
        // 扩展运算符将数组转化为参数序列用逗号分割开
        // 声明一个数组
        const start = ['黄子杰', '鹿哈', '鹿管'];
        // 声明一个函数
        function eso() {
            console.log(arguments);
        }
        eso(...start);// 也就是等价于 eso('黄子杰', '鹿哈', '鹿管');
    </script>

 

扩展运算符应用

1.合并数组

    <script>
        // 将数组合并
        // 声明俩数组
        const start1 = ['黄子韬', '迪丽热巴', '郭德纲'];
        const start2 = ['鹿晗', '关晓彤', '郭麒麟'];
        const startadd = [...start1, ...start2];
        console.log(startadd);
    </script>

2.数组的克隆

<script>
            // 2.数组克隆
        // 注:如果数组内有引用类型数字据的话,是一个浅拷贝
        const song = ['余香', '偏爱', '泡沫'];
        const song1 = [...song];
        console.log(song1);
 </script>

 

3.伪数组转化成真正的数组

<body>
    <div></div>
    <div></div>
    <div></div>
    <script>
        const divs = document.querySelectorAll('div');
        const divsArr = [...divs];
        console.log(divsArr);
 </script>
</body>

四,Symbol第7种数据类型

1.七种数据类型

ES6 引入了一种新的原始数据类型Symbol, 表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型

Uundefined
Sstring symbol
Nnull
Oobject
Bboolean

 2.Symbol特点

  1. Symbol 的值是唯一的,用来解决命名冲突的问题

  2. Symbol 值不能与其他数据进行运算

  3. Symbol 定义的对象属性不能使用for..in 循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名

3.Symbol的使用

    <script>
        // 创建symbol 这里是函数
        let sy = Symbol();
        let sy1 = Symbol('山鱼');
        let sy2 = Symbol('山鱼');
        console.log(sy1 === sy2);
        // 返回值为false 
        // 虽然都是山鱼,但是都具有唯一行,就像俩同名同姓的人身份证号不一样
        // Symbol.for() 创建 ,被称为函数对象
        let sy3 = Symbol.for('one');
        let sy4 = Symbol.for('one');
        console.log(sy3 === sy4);
        // 返回值为true
    </script>

4.如何给对象添加Symbol方法

 <script>
        // 1.给对象添加Symbol方法
        // 第一种
        let play = {
            name: '老鹰捉小鸡',
            left: function () {
                console.log('向左走');
            },
            right: function () {
                console.log('向右走');
            }
        }
        let moves = {
            left: Symbol(),
            right: Symbol()
        };
        play[moves.left] = function () {
            console.log('向左走');
        }
        play[moves.right] = function () {
            console.log('向右走');
        }
        console.log(play);
        // 第二种
        let game = {
            name: '全民打飞机',
            [Symbol('move')]: function () {
                console.log('我可以上下左右移动');
            },
            [Symbol('kill')]: function () {
                console.log('我可以击杀敌机');
            }
        }
        console.log(game);
</script>

 

五,迭代器

1.什么是迭代器?

迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。 任何数据结构只要部署Iterator 接口,就可以完成遍历操作。ES6 创造了一种新的遍历命令for..of 循环Iterator接口for..of消费,原生具备iterator接口的数据(可用forof遍历)

    <script>
        // 声明一个数组
        const mingzhu = ['西游记', '红楼梦', '水浒传', '三国演绎'];
        // 使用for in循环,保存的是键名
        // 使用for of循环,保存的是键值
        // for (let v of mingzhu) {
        //     console.log(v);
        // }
        // 调用对象的next方法
        let iterator = mingzhu[Symbol.iterator]();
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
    </script>

2.迭代器的应用 ​​​​​​​

<script>
        // 声明一个对象
        const classroom = {
            name: '高三296',
            stus: [
                '小赵',
                '小李',
                '小陈',
                '小刘'
            ],
            [Symbol.iterator]() {
                // 声明一个索引变量
                let index = 0;
                let _this = this;
                return {
                    next: function () {
                        if (index < _this.stus.length) {
                            const result = {
                                value: _this.stus[index], done: false
                            }
                            index++;
                            return result;
                        } else {
                            return { value: undefined, done: true };
                        }
                    }
                };
            }
        }
        // 使用for of遍历对象
        for (let v of classroom) {
            console.log(v);
        }
    </script>

写在最后

我是Aic山鱼,感谢您的支持
​原 创 不 易 ✨还希望支持一下
点赞👍:您的赞赏是我前进的动力!
收藏⭐:您的支持我是创作的源泉!
评论✍:您的建议是我改进的良药!
山鱼🦈社区:山鱼社区💌💌

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

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

相关文章

vue脚手架(2022年9月份nodejs16.17.0版本)

vue脚手架(2022年9月份nodejs16.17.0版本) 目录 vue脚手架(2022年9月份nodejs16.17.0版本) 下载地址 环境变量设置 全局文件夹与缓存文件夹设置 修改国内的【阿里】镜像 查看vue信息 更新npm 新增环境变量 安装vue与router 安装vue脚手架 Vue项目创建 项目层级 …

GitHub Copilot的下载使用方法(2022最新)

流程 1.去官网提交申请 填写邮件 2.等待几天收到邮件 3.点击邮件链接下载copilot-docs-main 4.打开vsCode&#xff0c;在扩展商店搜索下载github copilot 5.安装完成之后会在vsCode右下角提示登录github以及允许copilot 6.如果你有资格那么vsCode右下角就会出现copilot的…

Window.location用法

Window.location 详细介绍 本文翻译自 samanthaming 发表于 dev.to 的博文 原文地址 window.location Cheatsheet - DEV Community &#x1f469;‍&#x1f4bb;&#x1f468;‍&#x1f4bb; 如果你需要获取网站的 URL 信息&#xff0c;那么 window.location 对象就是为你准备…

【vue2可视化开发】新手会遇到的问题——大屏自适应

简要描述 开发可视化大屏第一步&#xff0c;必须要考虑适配不同屏幕的问题&#xff0c;在网络上查看资料&#xff0c;总结了一个目前最适合可视化开发的自适应方案——v-scale-screen组件 1. 安装 注&#xff1a;vue2使用v-scale-screen1.0.0版本&#xff0c;vue3使用v-scal…

Qt 下拉复选框(MultiSelectComboBox)(一) 实现下拉框多选,搜索下拉框内容

文章目录本系列目录前言一、QCombobox的组成二、MultiSelectComboBox实现1. 总体实现2. QLineEdit部分3. QListWidget部分1. 搜索框部分2. 选项部分4. 对外接口定义5. 代码实现总结本系列目录 Qt 下拉复选框&#xff08;MultiSelectComboBox&#xff09;(一) 实现下拉框多选&a…

vue3中使用ref语法糖

自从引入组合式 API 的概念以来&#xff0c;一个主要的未解决的问题就是 ref 和响应式对象到底用哪个。响应式对象存在解构丢失响应性的问题&#xff0c;而 ref 需要到处使用 .value 则感觉很繁琐&#xff0c;并且在没有类型系统的帮助时很容易漏掉 .value 以上是官方原话,大概…

webrtc streamer前端页面js播放摄像头rtsp流

webrtc streamer 大致的了解了一下&#xff0c;就是使用js来播放rtsp视频流的一个技术。目前实现的厂家有很多&#xff0c;但是要收费。我这里是找了一个开源免费的项目&#xff0c;使用起来有一定的局限性&#xff0c;需要根据自己的业务自己去实现逻辑&#xff0c;目前我只做…

盘点那些神级uniapp插件,总有一款让你事半功倍

自从有了uniapp&#xff0c;各位做小程序&#xff0c;app是不是感觉快起飞了&#xff0c;如果你想快速推出自己的移动端&#xff08;各平台小程序&#xff0c;安卓、苹果&#xff09;&#xff0c;那么uniapp还是很不错的&#xff0c;至少时间和研发成本可以帮你降低很多很多。 …

VUE+BPMN.JS右侧属性栏自定义功能

博主最近项目需求要实现BPMNVUE实现流程自定义, 在完成基础功能后,要求右侧属性栏内的一些属性需要根据后端返回内容进行动态渲染, 这时候,用原来的属性栏明显就不满足需求,我找到的大部分博客包括官方都是建议你根据项目需求来全部重写一个属性栏.但是项目时间紧的情况下这种…

React基础-JSX的本质-虚拟DOM的创建过程

文章目录JSX的本质虚拟DOM的创建过程JSX的本质 实际上&#xff0c;jsx仅仅只是 React.createElement(component, props, ...children) 这个函数的语法糖。 所有的jsx最终都会被转换成React.createElement的函数调用。 createElement需要传递三个参数: 参数一:type 当前元素的…

Error in render: “TypeError: Cannot read properties of undefined (reading ‘length‘)“,深层次数据处理报错????

vue中出现很烦人的红色报错&#xff0c;例如&#xff0c;如下图&#xff1a; 1. 2. Error in render: “TypeError: Cannot read properties of undefined (reading ‘name‘)“ 一般这样的length读取出现的报错&#xff0c;往往很令人苦恼&#xff0c;vue虽然正常渲染&#x…

炫酷登录注册 完整功能版【本地存储+JS+HTML+CSS+jQuery】

一&#xff1a;源码获取 &#x1f50d;说明&#xff1a; 这篇文章是完整功能的登录注册&#xff0c;包含了基于本地存储的注册&#xff0c;登录&#xff0c;以及密码修改功能&#xff0c;登录包含错误三次冻结账户1000s等细微功能&#xff0c;适合新入门前端的小伙伴拿来学习使…

前端页面显示的时间格式为:2022-03-18T01:46:08.000+00:00 如何转换为:年-月-日 时:分:秒 ?

解决办法&#xff1a; 第一种办法&#xff1a;后端格式处理&#xff0c;在后端转数据格式为字符串类型 第二种办法&#xff1a;前端格式处理&#xff0c; ElementUI 中 Table-column Attributes 列属性中有一个 formatter参数 &#xff0c;用来格式化内容 &#xff0c; 里面可…

SpringBoot+Vue实现文件上传下载功能

前言 本文主要实现了以下功能&#xff1a; 1、 单文件上传以及多文件上传功能 2、 输入文件名下载文件功能 3、 输入音频文件名在线播放音频功能 一、项目基础部分搭建 1.1 前端项目搭建 1.1.1 新建前端项目 打开命令行输入以下命令&#xff0c;使用Vue CLI创建前端项目&a…

浏览器同源策略导致跨域问题 No ‘Access-Control-Allow-Origin‘ header 原因及解决方式--(后端、nginx、前端)

目录 现象 原因 浏览器同源策略 导致结果&#xff1a; 解决方案 跨源资源共享&#xff08;CORS&#xff09; 各个端解决方法&#xff1a; 后端&#xff1a; 方式1&#xff1a;重载WebMvcConfigurer方法 方式2&#xff1a;配置监听CorsFilter 方式3&#xff1a;相关类…

微信小程序--》你真的了解小程序组件的使用吗?

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;微信小程序 &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&…

JAVA-分页查询

分页查询 分页查询将数据库中庞大的数据分段显示,每页显示用户自定义的行数,提高用户体验度,最主要的是如果一次性从服务器磁盘中读出全部数据到内存,有内存溢出的风险 真假分页 假分页: 其原理还是将所有的数据读到内存中,翻页从内存中读取数据, 优点: 实现简单,性能高 缺点…

HTML+CSS+JS网页设计期末课程大作业 京剧文化水墨风书画

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业&#xff0c;茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在操作…

EasyExcel复杂表头导出(一对多)升级版

一、前言 在之前写的 EasyExcel复杂表头导出&#xff08;一对多&#xff09;的博客的结尾&#xff0c;受限于当时的能力和精力&#xff0c;留下一些问题及展望。现在写下此博客&#xff0c;目的就是解决之前遗留的问题。 背景介绍&#xff0c;见上述链接指向的博客&#xff0c;…

vue3 route和router的区别以及如何传参数接受参数,如何像vue2一样使用$route和$router详解

vue3 route和router的区别以及如何传参数接受参数&#xff0c;如何像vue2一样使用$route和$router详解 因为我们在 setup 里面没有访问 this&#xff0c;所以我们不能再直接访问 this.$router 或 this.$route。作为替代&#xff0c;我们使用 useRouter 和useRoute函数,或者 Vu…