访问javascript属性在直接访问时比在dev工具中读取对象时产生不同的结果

时间:2013-06-29 17:18:12

标签: javascript jquery jquery-ui slider uislider

我正在尝试在范围模式下调试流行的“无法调用方法'的'未定义'的'jQuery滑块',并找到一些奇怪的东西。有人说这个错误是由于值作为字符串而不是整数传递,但是我的值是经过验证的整数,我没有想法,所以我去尝试调试jQuery UI,立即达到死胡同。

见图片: enter image description here

如您所见,当我在开发工具中展开选项对象时,options.values是一个包含两个NaN的数组。但是,如果我是console.log(options.values),我应该使用正确的数值来获得真正的数组。更糟糕的是,当我直接用console.log(options.values [0])记录它们时,我得到了正确的值。

然而,当滑块请求值时,它总是返回NaN - 这在计算范围滑块的nearestHandle时很明显 - NaN是如此有毒,它会使整个循环中毒并返回一个未定义的nearestHandle,从而导致上述“ addClass“错误。

为什么图像的情况会发生?为什么会这样?显然,两个相同的属性包含不同的值,具体取决于访问它们的方式。

1 个答案:

答案 0 :(得分:2)

Chrome控制台有点棘手。您看到的Object的状态不一定反映记录时的状态。它可以是“更新的”视图。

虽然这不能解决您的主要问题,但很明显,在许多情况下,记录对象对Chrome的调试没有多大帮助。断点将是更好的选择。

也就是说,在代码中的某个地方,对象似乎已经改变了。