根据https://developer.mozilla.org/zh-CN/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
}
Run Code Online (Sandbox Code Playgroud)
这种&&行为打败了我,对我来说似乎很难理解。
expr1 && expr2-返回expr1是否可以将其转换为false;否则,返回expr2。
有人可以帮助我理解这一点,并提出一些&&有用的用例。
编辑:从建议的原始问题中找到它。这给了我足够的理由使用它。
&&有时称为警卫队。
变量=指标&&值
仅当指标为真时,才可以使用它来设置值。
我的问题是,“有人可以帮助我理解这一点,并提出一些&&有用的用例。” 我不知道这个问题的哪一部分很难理解。我举了一个例子,我发现||。有用,上面的原因也充分说明了&&也可以有用的原因。是的,我不熟悉JavaScript,是的,我不像你们所有人那么聪明。但是有点友善会帮助我到达那里。和平!
它以一个假值停止并返回最后一个值(我认为这样更清楚)。这对于嵌套对象非常有帮助。假设您可能有这样的对象,但是prop或nestedProp可能不存在:
var a = {
prop : {
nestedProp : {
hello : 'hello'
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我们需要检查 nestedProp
你不能说:
if(a.prop.nestedProp.hello === 'hello')
Run Code Online (Sandbox Code Playgroud)
因为prop和nestedProp可能未定义,如果您尝试执行该检查,则会得到TypeError。
所以你这样做:
if(a.prop &&.prop.nestedProp && a.prop.nestedProp.hello === 'hello')
Run Code Online (Sandbox Code Playgroud)
尝试分配hello道具是同一回事:
var hello = a.prop && a.prop.nestedProp && a.prop.nestedProp.hello;
Run Code Online (Sandbox Code Playgroud)
如果a.prop未定义,它将在此处停止并返回未定义。如果它是一个真实的值,它将进行评估a.prop.nestedProp;如果它是一个虚假的值,则将返回它,否则返回a.prop.nestedProp.hello。
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |