相同类型的变量彼此不相等

时间:2018-03-24 12:36:21

标签: javascript variables

为什么dropdowns[i]应该在此处分配给变量openDropdown?但是,console.log()dropdowns[i]的{​​{1}}相等。

openDropdown

如果它们相同,为什么这段代码不起作用?

window.onclick = function(event) {
    if (!event.target.matches('.dropbtn')) {

        var dropdowns = document.getElementsByClassName("dropdown-content");
        var i;
        for (i = 0; i < dropdowns.length; i++) {
            var openDropdown = dropdowns[i];
            if (openDropdown.classList.contains('show')) {
                openDropdown.classList.remove('show');
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这一行:

var openDropdown = dropdowns[i];

为现有值openDropdown添加一个名称(dropdowns[i])。

它没有创建dropdowns[i]值的副本。因此,在之后修改openDropdown时,您将触及通过名称openDropdownsdropdowns[i]可以获得的值。

根据您的需要,您可能需要搜索javascript对象的浅或深副本。