当直接访问javascript属性时,与在开发工具中读取对象时,访问javascript属性会产生不同的结果

当直接访问javascript属性时,与在开发工具中读取对象时,访问javascript属性会产生不同的结果,javascript,jquery,jquery-ui,slider,uislider,Javascript,Jquery,Jquery Ui,Slider,Uislider,我试图在范围模式下调试jqueryslider的流行“cannotcallmethod'addClass'ofundefined”,并发现一些奇怪的事情。有人说这个错误是由于值被作为字符串而不是整数传递,但是我的值是经过验证的整数,我没有主意,所以我去尝试调试jQuery UI,立即遇到了死胡同 如图所示: 如您所见,当我在dev工具中展开options对象时,options.values是一个由两个nan组成的数组。但是,如果我使用console.log(options.values),我会

我试图在范围模式下调试jqueryslider的流行“cannotcallmethod'addClass'ofundefined”,并发现一些奇怪的事情。有人说这个错误是由于值被作为字符串而不是整数传递,但是我的值是经过验证的整数,我没有主意,所以我去尝试调试jQuery UI,立即遇到了死胡同

如图所示:

如您所见,当我在dev工具中展开options对象时,options.values是一个由两个nan组成的数组。但是,如果我使用console.log(options.values),我会得到实际数组,它应该是正确的数值。更糟糕的是,当我直接用console.log(options.values[0])记录它们时,我得到了正确的值

但是,当slider请求值时,它总是返回NaN-这在计算范围滑块的ClosesHandle时很明显-NaN毒性太大,会毒害整个循环并返回未定义的ClosesHandle,从而导致前面提到的“addClass”错误


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

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

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


也就是说,在代码中的某个地方,对象似乎发生了变化。

事实上,AngularJS的异步特性(在其范围内执行此滑块倡议)以一种奇怪的方式摆弄了options对象。添加创建事件处理程序解决了该问题。