gpt4 book ai didi

javascript - 如果没有值,则将变量设置为 null

转载 作者:行者123 更新时间:2023-12-02 16:02:26 25 4
gpt4 key购买 nike

如果该值存在,则执行操作,否则不执行:

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。

变量结果从未被设置,错误似乎破坏了流程。未捕获类型错误:无法读取 null 的属性“2”

如果没有 cookie,我如何告诉 Javascript 将 iscontact 设置为 null,而不是抛出错误?

我记得过去看到过一些 JS,其中变量被设置为 var apples = 'bla' || '其他'; 这与这里相关吗?比如如果它存在就留下它,否则定义它?还是我走错了路?

最佳答案

尝试:

var iscontact = cookarr && cookarr[2] || null;

|| 可以用作 JavaScript 版本的空合并运算符。它会说:“如果左侧的值是真值,则使用该值。否则,使用右侧的值”。但在这种情况下,您甚至不需要 ||

以下内容可以正常工作:

var iscontact = cookarr && cookarr[2]

上面的 && 检查是在数组本身存在的情况下获取数组元素的快捷方式。 && 链中的值(这里只有两个)将按顺序求值。如果它遇到一个评估为假的值,它将停止并返回它。否则,它将返回链中的最后一个值。

在您的代码中,如果 cookarr 为 null(假),则链结束并且 iscontact 设置为 null。如果 cookarr 不为 null 并返回真值,则链将继续到链中的下一个(也是最后一个)项目,并将 iscontact 设置为 cookarr [2].

要回答您的问题,“为什么我不能只使用 iscontact = cookarr[2] || null”:

当 JavaScript 引擎尝试计算 cookarr[2] 时(当 cookarr 为 null 时),它会尝试执行 null[2] 。在 JavaScript 中,null 是一个 object,因此这种表示法与获取对象属性的值相同。由于 2 不是 null 的属性,因此它会引发错误。

关于javascript - 如果没有值,则将变量设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com