1

This is a function used in jQuery UI widgets and plugins -

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

How can I get the value of var somevariable = outside this function?

Using it as a global variable doesn't work:

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

In this code var somevariable doesn't get the value '4' when it is placed before or after var select =

EDIT: To make it more detailed, I want to use this variable in another function like in the following jQuery UI plugin:

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

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

    },
    open: function( event, ui ) {

    somevariable = 5;

    }
});

In this case when the open: event is triggered, the value does not get retrieved by source:

4

1 に答える 1

6

おそらくこれはあなたが望むものですか?

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

3 行目にないことにより、 内のvar新しい変数ではなく、1 行目で宣言された変数を参照するようになりました。selectsomevariable

変数が関数内でローカル変数として宣言されている場合、関数の外部からアクセスすることはできません (ただし、その関数内で宣言された関数からアクセスすることはでき、その値は通常どおり渡すことができます)。それができないという事実は、実際には非常に強力なものであり、Javascript でプライベート スコープを作成する手段として機能します。


また、関数宣言を介してメソッドを宣言することを検討してください。

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

(利点: わずかに短く、上に持ち上げられる - 定義した場所の上に呼び出すことができます。欠点: ファーストクラスの市民として扱うことができるという点で、わずかに直感的ではありません)。

于 2013-02-11T20:48:29.410 に答える