javascript - 为什么这个不变的变量会在同一个函数中改变值?(是因为缓存吗?)
问题描述
我有一个在$(document).ready()
. 您会注意到我在函数中放置了两个调试语句。第一个调试语句获取dragAndDropEnabled
函数顶部的值。第二条语句获取dragAndDropEnabled
JSON 的“内部”属性中的值,如果向下滚动,您将看到该值。
当我打开网页时,我得到的dragAndDropEnabled
. 第一个调试语句给出Line 41: Update NOT permitted
. 但是第二个调试语句给出了Line 61: Update permitted
.
为什么变量dragAndDropEnabled
在同一个函数中假设两个不同的值,而在整个函数中保持不变?
这只发生在我更改用户权限然后重新打开我的网页时。这让我认为extraSettings
JSON 正在被缓存,而函数initialiseTree
没有被缓存。因此,第一个调试语句给出了 的未缓存值dragAndDropEnabled
,而第二个调试语句给出了 JSON 的缓存值。
这是我对正在发生的事情的最佳猜测。我的猜测是否正确(即缓存与未缓存)?如果是这样,我该如何纠正这种行为?如果不是,那是怎么回事?
var initialiseTree = function(dragAndDropEnabled) {
$('#debugInfo').append("Line 41: " + (dragAndDropEnabled ? "Update permitted<br/>" : "Update NOT permitted<br/>"));
var extraSettings = {
edit: {
drag: {
inner: function(treeId, treeNodes, targetNode) {
$('#debugInfo').append("Line 61: " + (dragAndDropEnabled ? "Update permitted<br/>" : "Update NOT permitted<br/>"));
if (!dragAndDropEnabled)
return false;
// rest of code omitted
}
}
}
}
$.extend(true, settings, extraSettings);
zTree = $.fn.zTree.init($('#treeDiv'), settings, [rootNode]);
}
解决方案
推荐阅读
- swift - 关于编辑验证的 Eureka 表单
- node.js - Ubuntu-无法安装 Node JS Pulsar 客户端
- python - Keras 中语义分割的自定义骰子损失
- java - REST API - HTTP 状态 415 - 无法使用内容类型
- python - 嵌套字典到熊猫
- java - Pulsar:尝试开始使用 Java 客户端时连接被拒绝
- r - 如何从 Tiingo 获取实时报价
- wordpress - ordpress Slider Carousel 在阿拉伯语中不工作
- javascript - 每次用户在nodejs中播放视频时,如何生成唯一的视频链接?
- matrix - 如何通过 2 点的全局变换找到它们的局部变换?