3

重複の可能性:
javascript で定義されていない変数を確認する方法
javascript オブジェクトに特定のプロパティがあるかどうかを判断する

私のbeforeSend関数にはこれがあります

$.myloader.show();

しかし、一部のスクリプトにはその要素がないため、この行でエラーが発生します

$.myloader.show();$.myloader が存在しないというエラーが表示されます

どうすれば次のようなことができますか

if($.myloader exists)
$.myloader.show();
4

6 に答える 6

5

最も一般的で確実な解決策は次のとおりです。

if (typeof $.myloader != 'undefined') {

変数が関数または未定義以外のものを保持できないことが確実な場合は、次を使用できます

if ($.myloader) {

ただし、このテストは とにfalseも 一致するため、可能な値が確実な場合にのみ実行してください。0''

于 2012-10-11T07:06:55.320 に答える
0

未定義の値は「falsey」であり、if ステートメントで false と評価されるため、必要なのは次のとおりです。

if( $.myloader )
    $.myloader.show();
于 2012-10-11T07:16:13.030 に答える
0

これをさらに短時間で行うことができます。

$.myloader.show() ? console.log('yep') : console.log('nope');

または:

$.myloader.show() || console.log('fail');
于 2012-10-11T07:21:20.543 に答える
0

jQuery ( $) がオブジェクトであるとします。

if ($.hasOwnProperty('myloader'))
{
    //should work
    //try: $.hasOwnProperty('fn'), it'll return true, too
}

myloaderオブジェクトが jQuery オブジェクトに直接バインドされているのではなく、そのプロトタイプの 1 つを介してバインドされている場合:

if ('myloader' in $)
{
    //works, like:
    if ('hasOwnProperty' in $)
    {//is true, but it's not a property/method of the object itself:
        console.log($.hasOwnProperty('hasOwnProperty'));//logs false
    }
}

同じ方法で、使用したいメソッドを確認できます。

if ('myloader' in $ && 'show' in $.myloader)
{
    $.myloader.show();
}
于 2012-10-11T07:19:24.977 に答える
0

あなたは次のようにそれを行うことができます...

if(typeof $.myloader != 'undefined')
{    // your code here.  }; 
于 2012-10-11T07:09:06.287 に答える
0

短くしたい場合は、次のようにすることもできます。

$.myloader && $.myloader.show();

最初のオペランド (&& の前) は、guardと呼ばれます。ただし、これは読みにくく安全でないと主張する人もいるので、このif (typeof ...)解決策を使用することをお勧めします。

于 2012-10-11T08:00:29.947 に答える