正如您从我的代码中看到的那样,我尝试将一个密钥添加到哈希page_rank
:
var page_rank = {};
function create_page_rank_row(step, url, page_rank){
if(page_rank[step]){
}else{
page_rank[step] = { urls: {}};
}
page_rank[step].urls[url] = page_rank;
};
create_page_rank_row(0, "d01", 3);
create_page_rank_row(0, "d02", 4);
document.getElementById("result").innerHTML = JSON.stringify(page_rank);

<p id="result">
</p>
&#13;
但是它没有工作,我得到了错误:
Cannot read property 'urls' of undefined
我错了什么?我该如何解决?谢谢
答案 0 :(得分:1)
您使用也称为page_rank
的参数遮蔽了初始page_rank
变量。
当函数运行时page_rank
设置为数字。当我们内联你传递的参数的值时,请查看代码。
function create_page_rank_row(step, url, page_rank){
if(3[step]){
}else{
3[step] = { urls: {}};
}
3[step].urls[url] = 3;
};
Javascript不允许您在简单的原始值(如数字)上定义新属性。
可能会将外部变量重命名为page_ranks
。
答案 1 :(得分:0)
您正在使用page_rank参数作为整数调用该函数,并使用数组bracketes访问它。即使你设置了它,它也总是会返回undefined。
var x = 3;
console.log(x[0]); //undefined
x[0] = 'something';
console.log(x[0]); //still undefined
答案 2 :(得分:0)
var page_rank = {};
function create_page_rank_row(step, url, rank) {
if (!page_rank.hasOwnProperty(step)) {
page_rank[step] = {
urls: {}
};
}
page_rank[step].urls[url] = rank;
};
create_page_rank_row(0, "d01", 3);
create_page_rank_row(0, "d02", 4);
console.log(JSON.stringify(page_rank));
改变了什么?函数内部第三个参数的名称已更改&amp; hasOwnProperty添加在函数
中答案 3 :(得分:0)
变化
function create_page_rank_row(step, url, page_rank){
到
function create_page_rank_row(step, url, newrank){
和
page_rank[step].urls[url] = page_rank;
到
page_rank[step].urls[url] = newrank;