ES6——练习题

目录

一:简答题

1:Symbol是什么,有什么作用?

2:Set和Map是什么?有什么作用?

3:Iterator是什么?

4:for...in 和for...of有什么区别?

5:module、export、import是什么,有什么作用?

6:Promise中的then是同步的还是异步,简单描述下执行机制?

7:如下代码输出的结果是?

8:下图中输出的结果是?

9:class中的super是做什么用的?

扫描二维码关注公众号,回复: 16438947 查看本文章

10:说说什么是浅拷贝,什么是深拷贝?

二:操作题

1:封装一个Promise对象的函数,结合setTimeout模拟异步,如果传的偶数则返回(3s后)传入正确,奇数或者其他类则返回传入错误。

2:有如下一组格式学生分数,筛选及格的学生,并求及格学生的分数总和。(数组不用复制按此格式写即可)


一:简答题

1:Symbol是什么,有什么作用?

答:Symbol是一种数据类型,是类似于字符串的数据类型。

作用:阻止对象属性名冲突

           模拟私有属性

           定义不重复的常量

2:Set和Map是什么?有什么作用?

答:Set:类似于数组,但是成员的值都是唯一的,没有重复的值。

Map:JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制,map的键不限于字符串,对象也可以称为键。

作用:用于数据重组和数据储存。

3:Iterator是什么?

答:Iterator是迭代器。是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署lterator接口,就可以完成遍历操作,ES6新增遍历方式for...of。

原生具备lterator接口的数据有:Array,Arguments,Set,Map,String,NodeList。

4:for...in 和for...of有什么区别?

答:for in遍历索引(遍历可枚举类型)

for of遍历数组的值(遍历可迭代具备迭代器接口)

5:module、export、import是什么,有什么作用?

答:module 要在js中使用ES6的import。<script type="module "></script >,script 的type定义为module 。

export 指定输出的代码。export 命令可以出现在模块的任何位置,但必需处于模块顶层。

import导入模块功能。import导入的只是一个只读引用,等到脚本执行时根据引用才到模块里去取值。这也就是import可以按需加载的原因。

6:Promise中的then是同步的还是异步,简单描述下执行机制?

答:promise构造函数是同步执行的,then方法是异步执行的。

then()是Promise的实例方法,在Promise状态发生改变后,then()可以获得成功或失败后的值,并对其进行描述。

7:如下代码输出的结果是?

结果是:1243  。

8:下图中输出的结果是?

输出结果是 2 。

9:class中的super是做什么用的?

答:ES6 规定,子类必须在constructor()方法中调用super(),否则就会报错。super方法就是用来创建父类this对象的。

10:说说什么是浅拷贝,什么是深拷贝?

答:浅拷贝:拷贝栈地址,简单数据类型的更改之间不相互影响,但是引用数据类型的堆地址是同一个,更改会相互影响;

深拷贝:不仅拷贝栈地址,也拷贝堆地址,基本数据类型与引用数据类型的更改对原数据都没有影响。

二:操作题

1:封装一个Promise对象的函数,结合setTimeout模拟异步,如果传的偶数则返回(3s后)传入正确,奇数或者其他类则返回传入错误。

        let num = prompt('输入一个数字:');
        const MyPormise = new Promise((resolve, reject) => {
            setTimeout(() => {
                if (num % 2 == 0) {
                    resolve('传入正确');
                } else {
                    reject('传入错误');
                }
            }, 3000)
        });
        MyPormise.then(
            resolve => console.log(resolve),
            reject => console.log(reject)
        )

2:有如下一组格式学生分数,筛选及格的学生,并求及格学生的分数总和。(数组不用复制按此格式写即可)

const persons = [

   {realname:’张三1’,score:60},

   {realname:’张三2’,score:20},

   {realname:’张三3’,score:90},

......

]

 <ul id="scores"></ul>
    <hr>
    <input type="button" value="查找及格的学生" id="search" />
    <p>及格学生如下:</p>
    <ul id="pass"></ul>

    <script>
        let sScore = document.querySelector('#scores');
        let search = document.querySelector('#search');
        let pass = document.querySelector('#pass');
        const scores = [
            { realname: "张三", score: 40 },
            { realname: "李四", score: 60 },
            { realname: "王五", score: 90 },
            { realname: "赵六", score: 50 },
        ];

        let str = "";
        for (var i = 0; i < scores.length; i++) {
            str = str + `<li>姓名:${scores[i].realname},分数:${scores[i].score}</li>`;
        }
        sScore.innerHTML = str;

        search.addEventListener('click', function () {
            let newArr = scores.filter(item => {
                return item.score >= 60;
            })

            let str = '';
            newArr.forEach(item => {
                const { realname, score } = item;
                str = str + `<li>姓名:${realname}  分数:${score}</li>`;
            })
            pass.innerHTML = str;
            console.log("及格学生分数总和为"+newArr.reduce((sum, item) => sum + item.score, 0));
        })
       
    </script>

猜你喜欢

转载自blog.csdn.net/m0_46461853/article/details/125929387