gpt4 book ai didi

javascript - 为什么 JavaScript && 运算符返回第二个表达式?

转载 作者:行者123 更新时间:2023-11-28 13:20:34 24 4
gpt4 key购买 nike

根据 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

expr1 || expr2 对我来说很有意义。它短路表达式并返回第一个表达式,这是有道理的。我经常使用它来选择传递的变量与默认变量。例如。

var default_connection = 'localhost:27017/task_master';

function setdb(connection){
var conn_str = connection || default_connection;
//Do something here
}

&&这种行为让我很困惑,而且对我来说非常难以理解。

expr1 && expr2 - 返回expr1是否可以转换为 false;否则,返回expr2 .

有人可以帮助我理解这一点并建议一些使用案例 &&可能会有用。

编辑:从建议的原始问题中找到它。这给了我充分的理由来使用它。

&& is sometimes called a guard operator.

variable = indicator && value

it can be used to set the value only if the indicator is truthy.

我的问题是,“有人可以帮助我理解这一点并建议一些 && 有用的用例吗?”。我不知道这个问题哪一部分很难理解。我举了一个例子来说明我是如何发现||的很有用,上面的原因给出了 && 也很有用的充分理由。是的,我是 JavaScript 新手,是的,我不像你们那么聪明。但表现得友善一点会帮助我实现这一目标。和平!

最佳答案

它在错误值处停止并返回最后一个值(我认为这样更清楚)。这对于嵌套对象非常有帮助。假设您可能有一个像这样的对象,但 prop 或nestedProp 可能不存在:

var a = {
prop : {
nestedProp : {
hello : 'hello'
}
}
}

现在,如果我们需要检查 nestedProp 内的字符串该怎么办

你不能说:

if(a.prop.nestedProp.hello === 'hello')

因为 propnestedProp 可能未定义,如果您尝试执行该检查,您将收到 TypeError

所以你这样做:

if(a.prop &&.prop.nestedProp && a.prop.nestedProp.hello === 'hello')

尝试分配 hello 属性是一样的:

var hello = a.prop && a.prop.nestedProp && a.prop.nestedProp.hello;

如果a.prop未定义,它将停在那里并返回undefined。如果它是一个真值,那么它将评估a.prop.nestedProp,如果它是一个假值,那么它将返回该值,否则它将返回a.prop.nestedProp.hello

关于javascript - 为什么 JavaScript && 运算符返回第二个表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498769/

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