我有一个全局字典,在我的网络应用程序中存储变量,并注意到一些非常奇怪的东西。当我尝试更改布尔(true / false)变量时,出现来执行此操作,但实际上并没有这样做。
我用这个简单的jsfiddle重新创建了这个问题。使用Chrome,启动DevTools,然后单击“Push Me”按钮。在控制台中,您会看到app['active']
显示{active:true}
,但如果您通过单击左侧的三角形展开字典,则会显示active:false
。咦?
我有一种感觉这是一些核心的javascript(jQuery?)概念,我很遗憾,但是有任何帮助:
...将不胜感激。
答案 0 :(得分:2)
在记录变量之前,其原始值为true。这就是日志显示为true的原因,但是当您展开它时,控制台会显示更新的值。
尝试将日志放在底部,它将使用更新后的值false进行记录。
编辑:由于你更新了小提琴,html元素将打印为true,因为在将值更改为false之前已将文本分配给它。
答案 1 :(得分:1)
您的代码按预期工作,控制台日志显示在日志记录时将其设置为true,但由于您之后立即将其设置为false,因此扩展只会显示更新的值
答案 2 :(得分:0)
console.[method]
的行为方式没有一种标准方式。 Chrome中console.log
有点异步。在您的情况下,如果在单击按钮之前展开显示的值,并在单击按钮后,显示的值将仅为{ active: true }
Chrome Dev Tools仅在您请求时才会在控制台中显示扩展值。这意味着,在展开对象时,该值可能已更改。
这就是console.log
不被认为是可靠的调试方式的原因。
console.log
可能在Web浏览器(Firefox,Safari,Chrome,...)