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

'console.debug'ではなく' alert'をテストします。それでも同じ結果が得られますか? –

+0

はい。同じ結果 –

+2

[サンプルコード](http://sscce.org/)は不完全です。実際に 'this.map [l]'には何が格納されていますか?文字列の場合、文字列は不変です。 – outis

答えて

1

割り当てが無視される理由は文字列が不変であるためです。文字列のどの部分も変更することはできません。

残りのデザインによっては、this.mapを配列の配列に変換する方が意味があります。

関連する問題