我在 js 中的数组开头未定义

I get undefined at start of array in js

我制作了这段代码:

function get_coordinates(container) {
    var x;
    var y;
    var divs = container.getElementsByTagName('div');

    Array.from(divs).forEach(div => {
        y += div.offsetTop+" ";
        x += div.offsetLeft + " ";
    });
    const a = x + ";" + y;
    console.log(divs);
    return x+";"+y;
}


这是控制台日志:

HTMLCollection(10) [div#selector_1.selector, div#selector_2.selector, div#selector_3.selector, div#selector_4.selector, div#selector_5.selector, div#selector_6.selector, div#selector_7.selector, div#selector_8.selector, div#selector_9.selector, div#selector_10.selector, selector_1: div#selector_1.selector, selector_2: div#selector_2.selector, selector_3: div#selector_3.selector, selector_4: div#selector_4.selector, selector_5: div#selector_5.selector, …]

这是 return :

undefined0 0 0 0 0 0 0 0 0 0 ;undefined0 0 0 0 0 0 0 0 0 0

我不明白为什么我在两者的开头都未定义。

正如 Musa 在之前的评论中所建议的那样,您没有初始化 xy,因此基本上您要做的是以下操作:

y += div.offsetTop + " ";
x += div.offsetLeft + " ";

转化为

undefined += div.offsetTop + " ";
undefined += div.offsetLeft + " ";

在顶部你应该定义xy是字符串,例如:

let x = "";
let y = "";

此外,我建议使用 letconst 而不是 var,现在是 2022 年,因此不再需要 var