Javascript 执行未进入 for 循环

在执行我的 JS 代码时,我面临一个非常奇怪的问题。我的代码执行没有进入for循环,控制台中也没有错误。当我尝试通过直接在控制台中键入来执行循环时,它正在执行。这是循环:


for(var x = 0; x <= distance; x++) {

            var yMinusY1Sq = distance*distance - (x - startX)*(x - startX)

            var yMinusy1Cal = parseInt(Math.sqrt(yMinusY1Sq));

            console.log(yMinusY1Sq, yMinusy1Cal);

            if((yMinusY1Sq == yMinusy1Cal*yMinusy1Cal)) {

                y = yMinusY1Cal + startY;

                var point = document.createElement("div");

                point.className = "output-point";

                point.style.height =  (grid.offsetHeight/16).toString() + "px";

                point.style.width =  (grid.offsetWidth/16).toString() + "px";

                outputPoints.appendChild(point);

                point.style.top = y*oneBoxY;

                point.style.left = (x+startX)*oneBoxX;

                isodistancePoints.push(point);

            }

        }

这里distance是>=1。console.log循环内部没有执行和打印任何内容。而如果另一个console.log放在循环之前,它正在打印。那么,出了什么问题?


编辑 我试过打印distance,这是一个全局变量,就在循环之前,它正在显示undefined,但如果直接使用控制台打印,它会给出一个number值。这是一个屏幕截图:

http://img1.mukewang.com/613370680001e98f03260127.jpg

这里,是初始化和函数的顺序,初始化的其他全局变量工作正常。


var distance;


init();


function init() {

    distance = 1;

    //Other code

}


$("#run").bind('click', function () {

    // some other code

    for(var x = 0; x <= distance; x++) {

        // some code

    }

});


qq_笑_17
浏览 981回答 2
2回答

慕后森

问题是循环在一个else语句中,并且if语句的 有一个名为 的局部变量distance。我仍然不知道错误的确切原因,因为执行不应该进入,if因为它的条件不满足,但是重命名变量起作用了,现在我得到了所需的输出。但如果有人知道确切原因,请发表评论。

鸿蒙传说

您面临的问题出在控制台中。记录的是引用而不是对象的时间值。来自 MDN请注意,如果您在最新版本的 Chrome 和 Firefox 中记录对象,则您在控制台上记录的是对对象的引用,这不一定是您调用 console.log 时对象的“值”。 log(),但它是您打开控制台时对象的值。解决方案是console.log(JSON.stringify(distance))或者console.log(`${distance}`)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript