JavaScript全局变量正在重置其值

时间:2018-05-08 13:56:12

标签: javascript jquery

var n = "", l = "";
function OrderList(element) {
     n = "1";
     l = "2";        
}

window.onscroll = function (ev) {
    if ((window.innerHeight + window.scrollY) >= document.body.scrollHeight) {
        console.log(n);//returns ""
    }
};

为什么全局变量n,l在onscroll函数上丢失了它们的值? 在onscroll条件之前调用OrderList!

2 个答案:

答案 0 :(得分:1)

没有被调用,只是声明了(...)。声明一个函数不会在Javascript中执行它。由于在点击按钮时调用了OrderList函数,因此在您记录全局变量值之前(在OrderList处理程序中)可能会滚动页面

为了检查,你可以使OrderList成为像

这样的自执行函数
onscroll

确保单击按钮并再次检查。它应该与您的原始代码一起使用。

答案 1 :(得分:0)

两个变量都定义为空字符串。 然后你打电话来看看价值o" n"从未改变过。它仍然是一个空字符串。 你永远不会调用OrderList,它应该改变n值。

但最重要的是:避免使用全局变量。