console.log 字典循环返回函数而不是值

console.log on dictionary loop is returning functions instead of values

这张图片将有助于解释我的问题。

这是以下代码中控制台日志的结果。第一个控制台日志打印出预期的键值对数组。第二个控制台日志打印出预期的值,但也打印出一大堆函数。这似乎实际上在变量的值内,无法按原样使用。

我想在没有这种噪音的情况下循环遍历键值数组。我以前从未遇到过这个。不幸的是,我不确定如何尝试解决此问题,对此深表歉意。

这是代码,函数从评论中链接的堆栈溢出答案中略微改动。

// 
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        if (hash[1]) {
            vars[hash[0]] = hash[1];
        }
    }
    return vars;
}

var url_parameters = getUrlVars();
console.log(url_parameters);
for (var key in url_parameters) {
    var current_value = url_parameters[key];
    console.log(current_value);
}

您有一些库正在向对象的原型添加属性。这些仍然是可迭代的,但在 console.log()ing 对象时不会显示,因为那只显示对象自己的属性。

如果 url_parameters.hasOwnProperty(key).

,您应该只 运行 循环中的日志

此外,正如 Pamblam 指出的那样,您在应该创建对象时定义了一个数组。

var vars = [] 应该是 var vars = {}

对象基本上是具有 javascript 中函数的关联数组。