Javascript 如果没有值,则将变量设置为null
如果该值存在,则执行填充,否则不执行:Javascript 如果没有值,则将变量设置为null,javascript,Javascript,如果该值存在,则执行填充,否则不执行: var cookarr = document.cookie.match(/(^| )abc_contact\=([^;]*)(;|$)/); var iscontact = cookarr[2]; var outcome = 0; if(iscontact) { outcome = true; } else { outcome = false;
var cookarr = document.cookie.match(/(^| )abc_contact\=([^;]*)(;|$)/);
var iscontact = cookarr[2];
var outcome = 0;
if(iscontact) {
outcome = true;
} else {
outcome = false;
}
如果存在名为abc_contact的cookie,则返回的cookarr变量索引2将是该cookie的值
在cookie不存在的实例中,cookarr将为null
变量结果从未设置,错误似乎破坏了流程。未捕获TypeError:无法读取null的属性“2”
如果没有cookie,我如何告诉Javascript将iscontact设置为null,而不是抛出错误
我记得以前看到过一些JS,其中设置了一个变量,如
var apples='bla'| |'something'代码>与此相关吗?比如说,如果它存在,留下它,或者定义它?还是我走错了路?你可以先检查一下饼干。检查它是否未定义,是否有足够的匹配项
var cookarr = document.cookie.match(/(^| )abc_contact\=([^;]*)(;|$)/);
if (cookarr && cookarr.length > 1){
var iscontact = cookarr[2];
var outcome = 0;
if(iscontact) {
outcome = true;
} else {
outcome = false;
}
}
尝试:
| |
可以用作空合并运算符的JavaScript版本。它会说,“如果左边的值是真实的,就使用它。否则,就使用右边的值”。但在这种情况下,您甚至不需要| |
以下方法可以很好地工作:
var iscontact = cookarr && cookarr[2]
如果数组本身存在,则上面的&&
检查是获取数组元素的快捷方式。&&
链中的值(这里只有两个)将按顺序计算。如果遇到一个计算结果为falsy的值,它将停止并返回该值。否则,它将返回链中的最后一个值
在您的代码中,如果cookarr
为null(falsy),则链结束,并且iscontact
设置为null。如果cookarr
不为null并返回真实值,则链将继续到链中的下一个(也是最后一个)项,并将iscontact
设置为cookarr[2]
要回答您的问题,“为什么我不能使用iscontact=cookarr[2]| | null”:
当JavaScript引擎尝试计算cookarr[2]
时(当cookarr
为null时),它尝试执行null[2]
。在JavaScript中,null
是一个对象
,因此此表示法与获取对象属性的值相同。由于2
不是null
的属性,它会抛出错误。Ha,我在用最后一句话编辑我的问题后看到了这一点!那么,在英语中,它在做什么?握住我的手,再次感谢。那么为什么我需要cookarr和cookarr[2]?我可以让var iscontact=cookarr[2]| | null;实际上,您根本不需要|
,让我再次编辑。
var iscontact = cookarr && cookarr[2]