if( !body || body[0] === '<') {...}
我使用上面的语句来检查变量body
是undefined
还是null或除了预期值之外的任何值,但我一直得到一个TypeError:
TypeError: Cannot read property '0' of undefined
这怎么可能?根据检查未定义的非常流行的答案,如果body是null,undefined,NaN,&#34;&#34;,0,则上述语句的第一部分!body
应返回true
,或者是假 - 因此不评估OR条件的右侧:body[0] === '<'
在这种情况下。
Is there a standard function to check for null, undefined, or blank variables in JavaScript?
我还可以检查哪些内容以确保仅在body[0]
未定义时才调用body
?我也已尝试使用相同的描述行为if(typeof body === 'undefined' || body[0] === '<')
。对此的任何想法将受到高度赞赏。谢谢。
(仅供参考:body
是REST-API请求的响应,如果一切顺利,它将返回一个可以解析为JSON对象的字符串。但是,在某些情况下,整个HTML返回-file(包含错误信息),因此我在响应开始时检查&#39;&lt;&#;;有时变量似乎未定义&#39;抛出检查body[0]
时出错。)
答案 0 :(得分:1)
我认为你有倒退的逻辑。
function isFirstCharLt(value) {
return !!value && typeof value === 'string' && value[0] === '<';
}
console.log(isFirstCharLt(undefined));
console.log(isFirstCharLt(null));
console.log(isFirstCharLt('<string'));
console.log(isFirstCharLt('string'));
&#13;
答案 1 :(得分:1)
你没有向我们展示所有的密码;)
如果body
为undefined
,则会运行代码块,因为它会在if语句中快捷方式||
,并且我怀疑您在该代码块中的某处检查body[0]
if (!body || body[0] === '<') {
// is body[0] used here?
}
最好确保body
具有正确的属性,例如
if (typeof body === 'string' && body[0] === '<') {}
答案 2 :(得分:0)
我会使用两个if语句,检查它是否先定义然后验证:
if(body) {
if (body[0] !== '<') {
'DO-SOMETHING'
}
}