2

私は通常行います:

var x; 
x = new Slider({
    'dragstart' : function(e,ui){
        // blablabla
        x.addClass('being-dragged'); // using X here.
        // blablabla 
    }
});

代わりに、私は自信を持って行うべきですか

var x = new Slider({
    'dragstart' : function(e,ui){
        // blablabla
        x.addClass('being-dragged'); // using X here.
        // blablabla 
    }
});

私が物事を見る方法はx、その関数が構築されているときにローカルスコープには存在しないため、xグローバル、ウィンドウ、またはそれが見つかった場所から別のものを選択するのではないかと心配しています。

4

1 に答える 1

1

xその関数が構築されているときにローカルスコープに存在しない

関数は、dragstart呼び出されるまで「構築」されません。xundefinedその呼び出しの時点である場合、失敗します。その時点での唯一の方法xは、関数がコンストラクターから呼び出された場合です (この場合、コンストラクターはインスタンスを返していないため、暗黙的に であるデフォルト値がまだあります)。undefineddragstartSliderxundefined

それ以外の場合、dragstartが呼び出されると、 への参照は予想どおり外側のスコープにx解決されます。x

于 2013-10-24T08:16:35.133 に答える