这些代码的含义是什么?的JavaScript

时间:2018-03-14 21:55:12

标签: javascript function object ecmascript-6

function arrayToList(array) {
    let list = [];
    for(let element of array) {
        list = {value: element, rest: list};
    }
    return list;
}

console.log(arrayToList([1, 2, 3]));
// -> {value: 1, rest: { value: 2, rest: { value: 3, rest: [] } }}

在这段代码中,这行是什么?你能描述一下吗? list = {value:element,rest:list};

function listToArray(list) {
    let array = [];
    for(let node = list; node; node = node.rest) {
        array.push(node.value);
    }
    return array;
}

console.log({value: 1, rest: { value: 3, rest: [] }});
// -> [1, 3];

在此代码中,此行如何工作? for(let node = list; node; node = node.rest){expression}

1 个答案:

答案 0 :(得分:1)

它递归地嵌套对象内的数组值。第二个函数将它们退回到一个数组中。

它让我想起一个链表。虽然我无法想象为什么这会在像JavaScript这样有效缺乏指针的语言中有用。