if not undefined和indexOf(' foo')做点什么

时间:2012-04-17 01:14:58

标签: javascript jquery undefined indexof typeof

所以我试着调用哪里如果没有未定义,索引是foo所以我使用:

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

这很好但我不想两次调用getdata。有没有办法说getdata未定义而indexOf是foo然后做一些事情而不调用getdata()函数两次?

3 个答案:

答案 0 :(得分:2)

你试过吗

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

}

答案 1 :(得分:2)

替代:

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)

答案 2 :(得分:1)

如果值未定义或为null,则可以读取值的indexOf或空字符串。

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

希望你的函数只返回一个字符串,undefined或null。