1

这是 jQuery UI 小部件和插件中使用的函数 -

var select = function( event, ui ) {
        var somevariable = 4;
    }

我怎样才能得到var somevariable =这个函数之外的值?

将其用作全局变量不起作用:

var somevariable;
var select = function( event, ui ) {
        var somevariable = 4;
    }

在这段代码var somevariable中,当它放在之前或之后时,它不会得到值“4”var select =

编辑:为了更详细,我想在另一个函数中使用这个变量,比如下面的 jQuery UI 插件:

  $( "#id" ).autocomplete({
    minLength: 0,
    source: function( request, response ) {

        if (somevariable == 5)
        {
        //do something
        }

    },
    open: function( event, ui ) {

    somevariable = 5;

    }
});

在这种情况下,当open:事件被触发时,值不会被source:

4

1 回答 1

6

也许这就是你想要的?

var somevariable;
var select = function( event, ui ) {
    somevariable = 4;
}

通过没有var在第 3 行,而不是作为内部的新变量selectsomevariable现在指的是在第 1 行声明的变量。

如果一个变量在函数内声明为局部变量,则不能从函数外访问它(但可以从该函数内声明的函数访问它,并且它的值可以像往常一样传递)。事实上,它不能做到这一点是一个非常强大的功能,它可以作为在 Javascript 中创建私有作用域的一种手段。


另外,考虑通过函数声明来声明你的方法:

var somevariable;
function select(event, ui) {
  somevariable = 4
};

(优点:稍短,提升到顶部 - 您可以在定义它的位置上方调用它;缺点:稍微不直观,可以将其视为一等公民)。

于 2013-02-11T20:48:29.410 回答