0

jQuery

$(selector).on('click',function(){
var $myvar = 'hi';
});

alert($myvar); // this won't alert hi as this is out of click function

如何在函数外部调用 $myvar ?


更新

我尝试了以下答案,但似乎无法正常工作http://jsfiddle.net/G5vAv/1/

我想在警报时返回值“hi”。任何想法?

4

4 回答 4

0

您不能,因为您$myvar在函数内部进行设置,所以它仅限于该函数的范围。如果您希望能够访问函数外部的变量,您可以:

  1. 省略var关键字,这将使其成为全局变量,或者
  2. 在函数之外定义它:

var $myvar;
$(selector).on('click',function(){
    $myvar = 'hi';
});
于 2013-09-12T04:55:47.490 回答
0

您需要定义$myvar函数的外部

var $myvar;
$('#click').on('click',function(){
    $myvar = 'hi';
    checknow();
    return false;
});

function checknow()
{
    alert($myvar);
}

小提琴

于 2013-09-12T04:59:07.437 回答
0
var $myvar;
$(selector).on('click',function(){
   $myvar = 'hi';
});
alert($myvar);

通过在 click 函数中使用 var ,您将其设置$myvarlocal variable只能在 click 函数中访问的 a 。

要使您的变量可以在外部访问,您必须在外部声明它。

更多关于它的 javascript-variable-scope

于 2013-09-12T04:54:03.290 回答
0

您必须像这样在函数外部声明变量

var $myvar;
$(selector).on('click',function(){
    $myvar = 'hi';
});

alert($myvar);

发生这种情况是因为 javascript 中的范围不同,您的变量已应用于函数的范围,并且警报超出了该范围,因此无法访问它。

您只需要记住,javascript 会查找未关闭的变量,因此您只能访问在当前级别或更高级别声明的变量,这里有一些示例。

var level_1;

// I can access level 1

function somefunc() {
   var level_2;
   // I can access levels 1 & 2


   return function() {
      var level_3;
      // I can access levels 1, 2 & 3 
   }
}
于 2013-09-12T04:54:25.320 回答