首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的for循环会在一次迭代后停止?

为什么我的for循环会在一次迭代后停止?
EN

Stack Overflow用户
提问于 2009-08-27 13:12:40
回答 3查看 2.2K关注 0票数 5

在这件事上绞尽脑汁。我有下面的代码: JavaScript游戏的第一阶段。所有对象都定义良好,我使用jQuery进行DOM交互。拼图是用以下JS代码创建的:

代码语言:javascript
复制
var mypuzzle = new puzzle("{solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]}");

但是,代码底部的循环不会比第一次迭代更深入。知道为什么吗?根本不会抛出任何错误。

代码语言:javascript
复制
function equationBox(equation, top, left) {//draggable equation box
    this.reposition = function() {
        this.top = 0;
        this.left = 0;
    }
    this.top = 0;//make random
    this.left = 0;//make random
    this.equation = equation;
    if(top && left) {
        this.top = top; 
        this.left = left;
    }
    this.content = this.equation.LHS.string + '<span> = </span>' + this.equation.RHS.string;
    this.DOM = $('<li>').html(this.content);
}


function puzzle(json) {

    this.addEquationBox = function(equationBox) {
        $('#puzzle #equations').append(equationBox.DOM);
    }

    this.init = function() {
        //this.drawPuzzleBox();
        this.json = JSON.parse(json);
        this.solution = new expression(this.json.solution || '');
        this.equations = this.json.equations || [];
        var iterations = this.equations.length;
        for(i=0;i<iterations;i++)
        {
            console.log(i);
            this.addEquationBox(new equationBox(stringToEquation(this.equations[i][0]),this.equations[i][1], this.equations[i][2])); 
        }
    }
    this.init();
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-27 13:18:07

这可能是因为您没有限定计数器变量的作用域,特别是如果您已经养成了这样的习惯(因为您正在使用该名称的全局变量,并且您在所调用的任何代码中编写的任何循环都可能执行相同的操作)。尝试:

代码语言:javascript
复制
for(var i=0;i<iterations;i++)
票数 11
EN

Stack Overflow用户

发布于 2009-08-27 13:20:43

因为this.equations = this.json.equations || [],并且由于this.json.equations是未定义的,所以它被赋值给[]

票数 1
EN

Stack Overflow用户

发布于 2009-08-27 13:49:55

假设您使用的是在https://github.com/douglascrockford/JSON-js/blob/master/json2.js中定义的JSON.parse,那么您的json字符串似乎没有正确解析:

代码语言:javascript
复制
var string1 = "{solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]}"
JSON.parse(string1); // throws SyntaxError("JSON.parse")

当我使用在同一个文件中定义的JSON.stringify从您的对象创建JSON字符串时:

代码语言:javascript
复制
var obj = {solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]}
var string2 = JSON.stringify(obj);
// {"solution":"5+6+89","equations":[["5+3=8",23,23],["5+1=6",150,23],["5+3=6",230,23]]}
JSON.parse(string2); // returns a proper object

请注意,JSON.stringify创建的字符串与您尝试使用的字符串不同,这可能是导致问题的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1341015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档