У меня есть что-то вроде этого:
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
Я не понимаю, почему я получаю 'undefined' во втором случае, когда согласно первому экземпляру свойство этого объекта явно существует!
У кого-нибудь есть идеи?
Спасибо
Хорошо, кажется, что люди путаются в том, в каком контексте существует код, для ясности, я теперь добавил вызов в blah (). но, пожалуйста, обратитесь к комментарию под ответом Джеффа Б!
Вот пример соответствующего кода, так сказать:
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 дало мне идею, и я попробовал это:
window.setTimeout(function(){ alert(test[2]); },2000);
и это сработало! Я получил ожидаемое значение, чтобы предупредить. Можете ли вы предложить, как я могу обойти это без использования "взломать", как это выше?