2016-11-03 5 views
0

Я хочу создать словарь, который можно обращаться как status[a][b] где a и b случайные строки, которые не известны в момент инициализации.Ошибка: состояние [х] не определено

Вот точный случай использования:

status = {} 
name = {}; 
time = {}; 
score = {}; 
for (i=0; i<$scope.submissions.length; i++) 
{ 
    e = $scope.submissions[i]; 
    status[e.rno] = status[e.rno] || {}; 
    time[e.rno] = time[e.rno] || 0; 
    score[e.rno] = score[e.rno] || 0; 
    status[e.rno][e.problem] = status[e.rno][e.problem] || 0; 
    if (e.score == 100 && status[e.rno][e.problem] == 0) 
    { 
     status[e.rno][e.problem] = 100; 
     time[e.rno] += e.id; 
     score[e.rno] += 100; 
    } 
} 
console.log(score["20161230"]); 

Он бросает ошибку: Error: status[e.rno] is undefined

ответ

1

status это свойство окна, и вы не можете изменить его тип. Поэтому вы должны использовать var, если вы находитесь в области функций (, чтобы избежать использования свойства глобального окна) или используйте другое имя, если оно должно быть глобальным.

+0

Я бы никогда не поймал это. благодаря! – anukul

+1

@anukul Просто привыкните всегда использовать локальные переменные, если вам действительно не нужна глобальная переменная. – Barmar

Смежные вопросы