Javascript变量正在改变其值,这可能会导致这种情况
Javascript variable is changing its value, reasons that can cause such?
我正在调试我见过的最奇怪的错误。此时,我的代码如下所示。
var counter = 0;
function setup() {
var count = ++counter;
var test = false;
function getSetter(arg?) {
if (typeof (arg) !== "undefined") {
console.log(["setting",count, arg]);
test = arg;
} else {
console.log(["getting",count, test]);
return test;
}
}
return getSetter;
}
var verticalScrollDisabled = setup();
这是一个封闭的范围,我已经确保变量测试不会在上述代码之外被访问。我可以将其更改为具有相同结果的任何名称。更新了它,清楚地表明它没有在此范围之外访问。并用计数器更新以显示其未覆盖。
从控制台复制粘贴结果。
["enter scroll area", div.fxs-blade-content, true, "3511>401 || 577>585"] HorizontalScrollBindingHandler.ts:12
["setting", 1,true] HorizontalScrollBindingHandler.ts:132
disable vert HorizontalScrollBindingHandler.ts:72
n.Event {originalEvent: WheelEvent, type: "mousewheel", isDefaultPrevented: function, timeStamp: 1422128039040, jQuery21104183536011260003: true…} HorizontalScrollBindingHandler.ts:15
["getting", 1,false] HorizontalScrollBindingHandler.ts:15
["getting", 1, false] HorizontalScrollBindingHandler.ts:75
[false, false]
问题
如前所述,我的问题是跟踪中看到的。 变量设置为 true,但当再次访问它时,它为 false。我不明白为什么会发生这种情况。
以及附加到鼠标滚动事件的处理程序。
var scrollHorizontally =(e) => {
// console.log([verticalScrollDisabled(), scrollInAction]);
console.log(e);
if (verticalScrollDisabled() && !scrollInAction)
return;
console.log([verticalScrollDisabled(), scrollInAction]);
这段代码已经工作了很久,除了我们在一些单独的代码中打开一个弹出窗口并再次关闭它之外,没有任何变化。是否有任何可能导致事件执行与窗口失去焦点或其他内容相关的超出预期的事情?同样,测试变量在 verticalcrollDisabled 函数之外没有更改,所以我不知道为什么它可以将自身更改为 false,请注意 ["设置",true]。
刚刚验证弹出窗口不是原因。
这是孔文件。https://gist.github.com/s093294/e49ed46d2680c1403e3b
答案是,验证你的假设。
我假设该文件没有加载两次,因为它是使用 define 定义并使用 requirejs 加载的模块。这并不成立,因为有一些 ID 映射使两个 id 加载此文件,正如其中一条评论所说,这就是使其成为可能的事情。
我解决了requirejs配置和问题发泄。
相关文章:
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 如何在不保存到其他变量的情况下更改JavaScript中的值
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 连接变量,在我的情况下背景样式损坏
- AngularJS在不使用变量的情况下将服务注入模块中,这样就可以缩小它
- 如何在没有表单提交、没有js、没有jquery和没有ajax的情况下将输入的文本框值存储到php变量中
- 如何在不赋值数组变量的情况下读取数组数据
- 如何在不定义变量的情况下使用 document.createElement()
- 在 jQuery 不起作用的情况下迭代变量
- 在不中断形式帖子的情况下在角度中设置变量
- Javascript变量在没有var的情况下工作
- 在不重新加载页面的情况下,从JSP(服务器端)b设置一个JavaScript变量
- 在这种情况下,如何使变量全局可访问
- 如何在不使用for循环的情况下增量增加变量的值
- Rails/JS-在不刷新页面的情况下获取变量
- 在不引起递归的情况下将两个淘汰变量连接在一起
- 在这种情况下,我可以使用 JS 变量吗以及如何使用
- 在没有ajax的情况下将多个变量传递到引用页面的最佳方式
- 如何在没有web服务器的情况下将变量数据从Python传输到Javascript