Javascript变量值在两个console.log()行之间更改

时间:2017-06-05 12:45:27

标签: javascript fancytree

我正在使用Fancytree,我正在使用ExtEdit extension创建一个新节点。节点的标题(主要文本)似乎设置正确,但值在两个try_pop语句之间一致地更改,并且错误的值将发送到服务器。

这里发生了什么?这令人难以置信。

Here's console.log() API。

这是我正在使用的全部功能:

FancytreeNode

这是输出。请注意function createNode(data) { console.log('this is the data object'); console.log(data); console.log('this is data.node.title'); console.log(data.node.title); $.ajax({ method: 'post', data: { name: data.node.title, parentId: data.node.parent !== undefined ? data.node.parent.key : null }, url: '/my/url' }).success(function (thisData, status, jqXHR) { data.node.key = thisData.id; }); } 的不同之处。

Mind-boggling result

1 个答案:

答案 0 :(得分:0)

我能够从Nevosis的评论中找到答案。使用console.log()记录对象时,实际上并未对其进行评估 - 它只是引用。导致功能发射的Fancytree事件有点奇怪;在事件结束之前,data.node.title未设置为新值,但我不会在控制台中扩展对象,直到该点之后。直接记录时data.node.title被评估(因为它必须是),这就是值不同的原因。通过在data之后立即设置断点,我能够看到正确的console.log()对象。