1

だから私は未定義ではなく、インデックスがfooである場合はどこを呼び出そうとしているので、次を使用します。

if (typeof(getdata(js, 'box1')) != "undefined" 
&& (getdata(js, 'box1')).indexOf('foo') >= 0) {
      // Do something
   }

これは正常に機能しますが、getdataを2回呼び出したくありません。が未定義getdataではなく、indexOfがfooであるかどうかを判断する方法はありますか?関数を2回呼び出さずに何かを実行しますか?getdata()

4

3 に答える 3

3

別:

if (/foo/.test(getdata(js, "box1"))) {
    // do something
}

これにより、1回のチェックで逃げることができますが、このような単純なテストの正規表現を使用することは眉をひそめる可能性があります:)

関数呼び出しの結果を格納するには、ローカル変数を使用することをお勧めします。

var data = getdata(js, "box1");

if (data && data.indexOf("foo") ==! -1) {
    // do something
}

typeofまた、これは演算子であり、関数ではないことに注意してください。

typeof something // instead of typeof(something)
于 2012-04-17T01:31:19.080 に答える
2

やってみました

var data = getdata(js, 'box1');
if(typeof(data) != 'undefined' && data.indexOf('foo') >= 0) {

}
于 2012-04-17T01:18:40.280 に答える
1

値のindexOfを読み取るか、値が未定義またはnullの場合は空の文字列を読み取ることができます。

if ( (getdata(js, 'box1') || '').indexOf('foo') !=-1) {
      // Do something
   }

うまくいけば、関数は未定義またはnullの文字列のみを返します。

于 2012-04-17T03:18:00.797 に答える