Javascript-意外)在for循环中

use*_*668 2 javascript syntax loops for-loop

Jslint将一个奇怪的错误返回到我从教科书中复制的一段非常烦人的代码.以下是本书中的代码:

....
{
for(var column = 0; column < COLUMNS; column++)
{
var currentTile = levelMap[row][column];
if(currentTile !== EMPTY)
Run Code Online (Sandbox Code Playgroud)

并抛出了一堆错误,就像你不能将值0分配给undefined或者其他什么.所以我像这样切换var语句...

{var row = 0; 
  var column=0;
  for(row < ROWS; row++;) 
  { 
    for( column < COLUMNS; column++;) 
    { 
      var currentTile = levelMap[row][column];

      if(currentTile !== EMPTY)
      {
Run Code Online (Sandbox Code Playgroud)

所以这样做 - 它现在有效.(有点...... Chrome不会引发错误,但它不能正常工作.事情没有显示在我的游戏中)但如果我通过jslint运行它我得到这个错误.

Unexpected ')'. for(row < ROWS; row++;)

采取;的关row++断它.拿出)来打破它.

即使它运行,它也无法正常运行.如果你愿意,我可以提供更多信息,我想我会把它放在更短的一端.

我是个白痴,显然,因为我无法弄明白.

Zet*_*eta 5

一个for循环包括四个部分信息:

  • 初始动作*,将实际的循环之前完成
  • 条件*,确定是否执行该语句
  • POST操作*,执行该语句后完成
  • 该声明

*实际上这些都是表达式,但更重要的是要记住它们的用途

for(init; cond; post) 
    statement;
Run Code Online (Sandbox Code Playgroud)

它可以直接转换成while循环,如果你觉得使用那个更舒服:

init;
while(cond){
    statement;
    post;
}
Run Code Online (Sandbox Code Playgroud)

如你所见,你我们错过了init.请注意,所有四个都可以为空.总的来说我们得到

var row, column, currentTile;
for(row = 0; row < ROWS; row++) {
    for(column = 0; column < COLUMNS; column++) { 
      currentTile = levelMap[row][column];

      if(currentTile !== EMPTY) {
          // ...
Run Code Online (Sandbox Code Playgroud)

  • @ user3055668这意味着在尝试查找其中的列之前,您需要确保`levelMap [row]`非空. (3认同)