2011-10-27 5 views
0

У меня странное поведение с простой функцией в javascript. Я пишу в матрице, но когда я читаю ее снова, я не вижу изменений. Может кто-нибудь объяснить мне почему? Вот код:Переменная Javascript не написана

this.map = [ 
    '## ### ##', 
    '# # #', 
    '# # . # #', 
    '# ## # #', 
    '## # #', 
    '#*# ## ##', 
    ' ## ', 
    '#########' 
]; 
this.check_collision = function (x, y) { 
    var l = Math.floor (y/this.tile_size); 
    var c = Math.floor (x/this.tile_size); 

    if (this.map[ l ] != undefined) { 
     if (this.map[ l ][ c ] != undefined) { 
      if (this.map[ l ][ c ] == '#') { 
       return true; 
      } 
      else if (this.map[ l ][ c ] == '.' || this.map[ l ][ c ] == '*') { 
       this.map[ l ][ c ] = ' '; 
       console.debug ("'" + this.map[ l ][ c ] + "'"); 
      } 
     } 
    } 
    return false; 
}; 

console.debug() печатает '' или '*', но я пишу char '' строку выше

+0

Тест 'alert' вместо' console.debug'. Вы все еще получаете тот же результат? –

+0

есть. тот же результат –

+2

[образец кода] (http://sscce.org/) является неполным. Что на самом деле хранится в 'this.map [l]'? Если это строка, строки неизменяемы. – outis

ответ

1

Причина, по которой игнорируется назначение, состоит в том, что строки неизменяемы. Вы не можете изменить какую-либо часть строки.

В зависимости от остальной части вашего дизайна может возникнуть смысл преобразовать this.map в массив массивов.

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