Javascript 无法读取属性';1';空值。变量设置
如果没有匹配项,则为变量指定null;如果有匹配项,则为变量指定第二个匹配项 这就是我所想的,但是当它返回null时,它仍然会检查代码的其余部分,以确定它何时为false。然后我得到一个Javascript 无法读取属性';1';空值。变量设置,javascript,jquery,Javascript,Jquery,如果没有匹配项,则为变量指定null;如果有匹配项,则为变量指定第二个匹配项 这就是我所想的,但是当它返回null时,它仍然会检查代码的其余部分,以确定它何时为false。然后我得到一个未捕获的TypeError:cannotreadproperty'1'为null 我怎样才能绕过这一部分,使它工作,而不给我一个错误 var matches = $("#search input").val().match(pattern); var id = []; id["new"] = (typeo
未捕获的TypeError:cannotreadproperty'1'为null
我怎样才能绕过这一部分,使它工作,而不给我一个错误
var matches = $("#search input").val().match(pattern);
var id = [];
id["new"] = (typeof matches === null) ? null : matches[1]; // <--
var matches=$(“#搜索输入”).val().match(模式);
var id=[];
id[“新建”]=(匹配项的类型===null)?null:匹配[1];// 试试这个:
id["new"] = (matches == null) ? null : matches[1];
.match()
如果未找到匹配项,则返回null
。typeof
运算符始终返回一个永远不会===null的字符串
由于当不匹配时,$(“#搜索输入”).val().match(pattern)
的结果总是null
,而当匹配时数组总是null
,因此您可以执行以下操作:
id["new"] = matches ? matches[1] :null;
甚至:
id["new"] = matches && matches[1];
首先检查匹配项是否有值谢谢。第二段代码发生了什么?它能工作,但我很好奇那里发生了什么,因为我不明白。@KiddmondA和&B
返回B
如果A
是真值,否则返回A
。由于matches
在不匹配时为空,并且在本例中您希望为空,因此代码可以简单地指向此。您的第一个代码不是错误的吗?如果匹配
是真的,您将得到空值
输出。。。