ES6练习二

这篇博客探讨了ES6中的一些关键特性,包括默认参数、Array.from方法的作用、Array.of与Array构造函数的区别,以及剩余参数在数组操作中的应用。通过分析多个代码示例,解释了不同情况下的执行结果,帮助读者深入理解这些概念。
摘要由CSDN通过智能技术生成

2020.12.7 01:42

使用了什么技术/方法==>实现了什么功能(==>做了什么事)

1、下面程序的执行结果是什么?请分析原因?

function f({x=10}={},{y}={y:10}){
	console.log(`x:${x},y:${y}`);
}
f();//10,10
f(undefined,undefined);//10,10
f({},undefined);  //10,10
f({},{}); //10,undefined
f(undefined,{});//10,undefined
f({x:2},{y:3});//2,3

分析:
{x=10}的意思是不赋值x或者传x的值为空的情况下x=10
{y}={y:10}的意思是不赋值y的情况下,y=10
1.f();不赋值,x和y等于默认值10
2.f(undefined,undefined); 传入undefined等于不赋值(不等于传空值),同1
3.f({},undefined);传空值x=10,不赋值y=10
4.f({},{});传空值x=10,传空值y=undefined
5.f(undefined,{});不赋值x=10,传空值y=undefined
6.f({x:2},{y:3});有传入值2,x=传入值即x=2,有传入值3,y=传入值即y=3
在这里插入图片描述

2.Array.from方法的作用是什么

ES6为Array增加了from函数用来将其他对象转换成数组。
当然,其他对象也是有要求,也不是所有的,可以将两种对象转换成数组。
1.部署了Iterator接口的对象,比如:Set,Map,Array。
2.类数组对象,什么叫类数组对象,就是一个对象必须有length属性,没有length,转出来的就是空数组。

let arr={
    0:1,
    1:2,
    2:3,
    length:3
}
console.log(arr);//原类数组
console.log(Array.from(arr));//转化为数组后
console.log(Array.from(arr) instanceof Array);//判断是否是数组

在这里插入图片描述

3.Array.of和使用Array()或new Array()构建数组实例有什么区别

Array.of()对new Array()和Array()的扩展 。不论输入什么,都代表的是数组元素。
正常情况下创建数组:

let arr = Array(1, 2, 3, 4)
console.log(arr) // 1, 2, 3, 4
console.log(arr.length) // 4

如果要创建只含有一个元素数组
Array()和new Array()会创建出length为4的空数组

let arr1 = Array(4);
console.log(arr1) // [empty × 4]
console.log(arr1.length) // 4

let arr2=new Array(4);
console.log(arr2) // [empty × 4]
console.log(arr2.length) // 4

在这里插入图片描述

用Array.of即可正常创建

let arr3=Array.of(4);
console.log(arr3) // [4]
console.log(arr3.length) // 1

在这里插入图片描述

4.下面程序执行结果是什么?

function push(array, ...items){
    items.forEach(function(item){
        //array=>[1,2]  items=>[1,2,3]
        array.push(item);
        console.log(item);//1,2,3
    });
    console.log(array);//[1,2,1,2,3]
}
var a=[1,2];
push(a,1,2,3);

分析:
其中a是array,1,2,3是剩余参数所以array=[1,2] items=[1,2,3],forEach遍历的是[1,2,3]
push使用了剩余参数,实现的功能是把所有输入的数据放入数组里面,最终array里是所有实参
实现了非箭头函数自带的arguments功能

5.下面程序执行结果是什么?

const headAndTail=(head,...tail)=>[head,tail];
console.log(headAndTail(6,2,3,4,5));//[6,[2,3,4,5]]

在这里插入图片描述
分析:
6是head,2,3,4,5是剩余参数tail,返回值是[head,tail]
因为剩余参数是数组,所以输出[6,[2,3,4,5,]]

把数组tail放置在一个数组内部,得到的是二维数组

2020.12.7 2:01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值