所以我试着调用哪里如果没有未定义,索引是foo所以我使用:
if (typeof(getdata(js, 'box1')) != "undefined"
&& (getdata(js, 'box1')).indexOf('foo') >= 0) {
// Do something
}
这很好但我不想两次调用getdata。有没有办法说getdata
是未定义而indexOf是foo然后做一些事情而不调用getdata()
函数两次?
答案 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。