首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >console.log输出一个在使用调试器时不同的值

console.log输出一个在使用调试器时不同的值
EN

Stack Overflow用户
提问于 2022-11-09 18:16:08
回答 1查看 25关注 0票数 0

我一直在JavaScript做一个sudoku的解算器。有一种非常奇怪的行为。下面是代码和上下文:

代码语言:javascript
复制
solveSudoku = ()=>{
      let sectionsCopy_ =sectionsCopy

      for(let sect =0; sect< 9; sect++){
        for(let box =0; box <9; box++){
          if(sectionsCopy[sect][box] === ''){
            for(let num=1; num<=9;num++){
              if(this.isPossible(sect,box,num)){
                sectionsCopy[sect][box]=''+num
                this.solveSudoku()
                sectionsCopy[sect][box]=''

              }
            }
            return
          }
        }
      }
      debugger
      console.log(sectionsCopy)

  }

这是在一个类内

sectionsCopy是一个全局变量。

sectionsCopy_仅用于调试(轻松查看全局变量的值)

isPossible()是确定num在该位置是否有效的函数。

是数独3x3平方的索引

box 是数独中单元框的索引。

问题是:

以数独为例:

当您单击求解时,sectionsCopy变量将存储:

代码语言:javascript
复制
[
     ["2","6","" ,"4","7","" ,"5","8","1"],
     ["" ,"" ,"3","" ,"" ,"" ,"" ,"" ,"4"],
     ["" ,"1","5","" ,"" ,"8","7","6","3"],
     ["" ,"3","" ,"" ,"" ,"6","" ,"" ,"8"],
     ["4","8","9","" ,"" ,"2","3","1","" ],
     ["" ,"7","" ,"8","3","" ,"" ,"" ,"" ],
     ["6","9","" ,"3","" ,"" ,"" ,"1","" ],
     ["" ,"" ,"8","" ,"9","" ,"5","" ,"" ],
     ["" ,"" ,"7","2","" ,"" ,"" ,"9","6"]
]

当我在没有打开调试器的情况下运行它时,我会得到以下结果:

如果打开调试器,我会看到以下内容:

下面是并排的结果,不使用调试器时的结果与使用调试器时的结果:

我原以为调试器下的行为在没有调试器的情况下是一样的(否则就会像本例一样毫无用处)。

我尝试过console.log(sectionsCopy_),但我知道数组是不可变的,所以没关系

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 19:11:22

感谢@epascarello便条。

似乎console.log是在数据被修改的时候输出数据的。

我做的解决办法是

代码语言:javascript
复制
let solution = JSON.parse(JSON.stringify(sections))
console.log(solution)

而不是

代码语言:javascript
复制
console.log(sections)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74379616

复制
相关文章

相似问题

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