Javascript 变量值在两个 console.log() 行之间变化
Javascript variable values changing between two console.log() lines
我正在使用 Fancytree, and I'm creating a new node using the ExtEdit extension。节点的标题(正文)似乎设置正确,但值在两个 console.log()
语句之间不断变化,错误的值被发送到服务器。
这是怎么回事?这让我很困惑。
Here's FancytreeNode
API.
这是我正在使用的完整功能:
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;
});
}
这是输出。请注意 data.node.title
的不同之处。
我是从 Nevosis 的评论中弄明白的。当使用 console.log()
记录一个对象时,它实际上并没有被评估——它只是一个 reference。导致函数触发的 Fancytree 事件有点奇怪; data.node.title
直到事件结束才设置为新值,但在那之后我才在控制台中展开对象。 data.node.title
直接记录时会被评估(因为它必须如此),这就是值不同的原因。通过在 console.log()
.
之后立即设置断点,我能够看到正确的 data
对象
我正在使用 Fancytree, and I'm creating a new node using the ExtEdit extension。节点的标题(正文)似乎设置正确,但值在两个 console.log()
语句之间不断变化,错误的值被发送到服务器。
这是怎么回事?这让我很困惑。
Here's FancytreeNode
API.
这是我正在使用的完整功能:
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;
});
}
这是输出。请注意 data.node.title
的不同之处。
我是从 Nevosis 的评论中弄明白的。当使用 console.log()
记录一个对象时,它实际上并没有被评估——它只是一个 reference。导致函数触发的 Fancytree 事件有点奇怪; data.node.title
直到事件结束才设置为新值,但在那之后我才在控制台中展开对象。 data.node.title
直接记录时会被评估(因为它必须如此),这就是值不同的原因。通过在 console.log()
.
data
对象