我有这样的事情:问题的Javascript对象和访问属性,它存在
var test = {};
function blah() {
test[2] = 'filled';
}
blah(); // ! Hopefully confusion is now averted..
console.log(test);
//result test -> 2:"filled"
console.log(test[2]);
//result undefined
根据一审时,我不明白为什么我越来越二审“未定义”时,该对象的属性显然存在!
有没有人有任何想法?
感谢
OK,似乎民间越来越困惑,什么情况下该代码存在,为了清楚起见,我现在已经添加了调用胡说()。但请参阅Jeff B的回复下的评论!
下面是相关的代码示例这样说:
mydb = ..... //gets created here with relevant credentials
var test = {};
mydb.transaction(
function(transaction) {
transaction.executeSql("select * from mytable;", [], function(transaction,result) {
var r = result.rows.item(0);
test[2] = r.title;
}, errorHandler);
});
console.log(test);
//result test -> 2:"the title"
console.log(test[2]);
//result undefined
@Dancrumb 你的JavaScript的单threadedness提给了我一个想法,我想这:
window.setTimeout(function(){ alert(test[2]); },2000);
,它的工作!我得到了预期值以提醒。你能否建议我如何在不使用上述“黑客”的情况下解决这个问题?
你没有显示你的所有代码,或者你正在关注第一个'console.log'的结果。 – 2010-04-06 17:54:29
我不明白你为什么在第一个地方得到'2:filled'(没有运行'blah()')。 – 2010-04-06 17:55:03
没有。我只是在Firebug控制台中运行它,并在控制台后面发表评论。日志(测试)'不是真的 – Dancrumb 2010-04-06 17:57:07