【问题标题】:Get a variable value outside from within a function defined by "var somthing ="从“var somthing =”定义的函数中获取外部变量值
【发布时间】:2013-02-11 20:28:58
【问题描述】:

这是一个用于 jQuery UI 小部件和插件的函数 -

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

如何在这个函数之外获取var somevariable = 的值?

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

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

在此代码中,var somevariable 放在 var select = 之前或之后时不会得到值 '4'

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

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

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

    },
    open: function( event, ui ) {

    somevariable = 5;

    }
});

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

【问题讨论】:

  • 如果您不想要局部变量,请不要使用var。就是这样。
  • 你不能,它是一个局部变量,你必须公开它。这不是你的功能所以你不能碰它?
  • @JanDvorak - 但如果函数不是由 var 定义的,则无法调用该函数。因为真正的函数不使用返回值。

标签: jquery jquery-ui function var


【解决方案1】:

也许这就是你想要的?

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

由于在第 3 行没有 var,而不是 select 中的新变量,somevariable 现在指的是在第 1 行声明的变量。

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


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

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

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

【讨论】:

  • 将函数值存储在全局变量之外的任何替代方法。 ?
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多