如何在新函数中再次使用变量

时间:2018-10-04 14:53:23

标签: javascript jquery variables

我正在使用此功能在元素(.catch)中插入html,并且仅当触摸事件被捕获到不同于前一个元素的新元素时,才需要执行此操作。

首先,我要抓住触摸位置,然后,我要检查新ID 与带有id != lastid先前ID 是否不同。但这不起作用, lastid undefined 。当触摸事件被新元素捕获时,如何重用var lastid的值?

var lastid ; 
$('.catch').bind('touchmove', function (evt) {
    var touch = evt.originalEvent.touches[0];
    var element = $(document.elementFromPoint(touch.clientX, touch.clientY));
    var id = document.elementFromPoint(touch.clientX, touch.clientY).id;
    if ( element.hasClass('catch') && id != lastid){    
        //Changing the value 
        lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }
});

谢谢!

edit: var lastid = id;

2 个答案:

答案 0 :(得分:2)

请勿在函数内部使用var。只需使用lastid = id,并指定var再次声明 在闭包(即函数)内的另一个具有相同名称的变量,将{{1} }在函数外部声明,并使其在函数内部无法访问(您无法访问这两个值)

lastid

答案 1 :(得分:1)

JavaScript变量具有功能范围。

if ( element.hasClass('catch') && id != lastid)
    {   
        //Changing the value 
        var lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }

这将创建一个新的局部变量lastid,并且所需的变量不会被更新。删除“ var”以将值分配给在函数的本地范围之外声明的变量“ lastid”。

    if ( element.hasClass('catch') && id != lastid)
    {   
        //Changing the value 
        lastid = id ;
        // execute the rest of the function here 
        // ....
        // ....
        return lastid;
    }

要处理lastid的不确定状态,请使用一些合法的值对其进行初始化。