具有true和false值的javascript变量?

时间:2018-02-01 01:20:50

标签: javascript jquery boolean

我有一个全局字典,在我的网络应用程序中存储变量,并注意到一些非常奇怪的东西。当我尝试更改布尔(true / false)变量时,出现来执行此操作,但实际上并没有这样做。

我用这个简单的jsfiddle重新创建了这个问题。使用Chrome,启动DevTools,然后单击“Push Me”按钮。在控制台中,您会看到app['active']显示{active:true},但如果您通过单击左侧的三角形展开字典,则会显示active:false。咦?

enter image description here

我有一种感觉这是一些核心的javascript(jQuery?)概念,我很遗憾,但是有任何帮助:

  1. 如何确保变量已完全更新,
  2. 为什么会这样?
  3. ...将不胜感激。

3 个答案:

答案 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,...)

中采取不同的行为