1

所以我试图调用 where if not undefined and index is foo 所以我使用:

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

这工作正常,但我不想调用 getdata 两次。有没有办法说如果getdata不是未定义并且 indexOf 是 foo 然后做某事,而不调用该getdata()函数两次?

4

3 回答 3

3

选择:

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

虽然这可以让您通过一次检查就可以逃脱,但是对于这样一个简单的测试涉及正则表达式可能会令人不快:)

最好使用局部变量来存储函数调用的结果:

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 或空字符串。

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

希望您的函数将只返回一个字符串,未定义或 null。

于 2012-04-17T03:18:00.797 回答