首页 > (...)扩展运算符怎么样去理解?

(...)扩展运算符怎么样去理解?

ES6中数组方法的扩展看到Array.from,有个...这样的运算符,里面写的是,可以讲某些数据结构转为数组。看完例子表示不太理解。1.某些数据结构指的是哪些?2.可以提供更加容易理解的例子嘛。多谢


举个例子

javascript
// arguments对象
function test() {
var args = [...arguments];
//之后args就成了数组了

第二个例子:调用iterator
var str=“hello”
[...str] // ['h','e','l','l','o']

第三四种情况不举例子了,也可以适用于set结构和对象结构 。具体结果什么样 我认为题主自己试一下比较好


不知道您有没有接触过后端语言,例如 c#
我这里就拿 c# 来举栗子了

这个在 c# 语言中叫做可变参数 就是方法的参数可以是无限个 实际上是个数组 由编译器提供的语法糖 让程序员可以更加方便的传递参数

以下是 c# 示例代码:

public int[] Filter(params int[] arr)
{
    if(arr == null || arr.Length <=0) return arr;
    return arr.Where(x => x % 2 == 0);
}

上面方法定义了一个可变参数的方法 Filter 方法内部是实现寻找整型数组中的所有偶数。
c# 中为数组参数前加上关键字 params 即表示这个参数为可变参数 (可以传递0 ~ 无限个参数),
并要求可变参数必须是这个方法的最后一个参数。

如果不加 params 关键字调用 Filter 方法时必须传递一个整型数组,如:

Filter(new int[] {1, 2, 3 ,4, 5, 6, 7, 8, 9, 0});

使用可变参数可以直接调用:

Filter(); //不传参数默认为null
Filter(1, 2, 3 ,4, 5, 6, 7, 8, 9, 0 [, ...]); //将参数的每一项都当作 `int` 对象赋值给 `arr` 数组接收

ES6 中的 (...) 也是如此

let demo = function demo(...values){
    console.warn(values.join('\n'));
}

调用

demo('start', 1, 3, 5, 7, 9, 'end');

// 输出:
// start
// 1
// 3
// 5
// 7
// 9
// end

// 如不使用 (...) 则需要
demo(['start', 1, 3, 5, 7, 9, 'end']);
【热门文章】
【热门文章】