Javascript变量范围问题

Ken*_*Ken 1 javascript var scoping target

我有一个简单的范围界定问题,这是我的意思.

这是一个更简单的代码版本,但采用相同的原则.

function myFunction(){
  $('.selector_1, .selector_2').click(function(e){
    var $trgt = $(e.target);
    var myVAR;

    if ($trgt.is('.selector_1')){
      myVAR = 'selector_1';
    }

    if ($trgt.is('.selector_2')){
      myVAR = 'selector_2';
    }
    console.log(myVAR);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果用户selector_1 myVAR每次点击都会成功填充,但是,第二个目标处理程序将始终返回myVAR为undefined.

我假设这是一个编程101类型的东西,但我还没有找到一个直截了当的答案.

谢谢你看看这个!批评公开表示赞赏.

Nea*_*eal 5

你的HTML可能是这样的:

<div class='selector_1'>HELLO</div>

<div class='selector_2'><span>HI THERE</span></div> 
Run Code Online (Sandbox Code Playgroud)

所以当你点击第二个时,你会得到未定义的因为目标是跨度而不是选择器.

小提琴演示:http://jsfiddle.net/maniator/M6fYf/