为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 执行未进入 for 循环

Javascript 执行未进入 for 循环

qq_笑_17 2021-09-04 17:55:57
在执行我的 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值。这是一个屏幕截图:这里,是初始化和函数的顺序,初始化的其他全局变量工作正常。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    }});
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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


查看完整回答
1 反对 回复 2021-09-04
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您面临的问题出在控制台中。记录的是引用而不是对象的时间值。来自 MDN

请注意,如果您在最新版本的 Chrome 和 Firefox 中记录对象,则您在控制台上记录的是对对象的引用,这不一定是您调用 console.log 时对象的“值”。 log(),但它是您打开控制台时对象的值。

解决方案是

console.log(JSON.stringify(distance))

或者

console.log(`${distance}`)


查看完整回答
1 反对 回复 2021-09-04
  • 2 回答
  • 0 关注
  • 980 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信