我知道在JavaScript中你可以这样做:
var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";
Run Code Online (Sandbox Code Playgroud)
其中变量oneOrTheOther将在第一表达式的值,如果它不是null,undefined或false.在这种情况下,它被分配给第二个语句的值.
但是,oneOrTheOther当我们使用逻辑AND运算符时,变量会分配给什么?
var oneOrTheOther = someOtherVar && "some string";
Run Code Online (Sandbox Code Playgroud)
什么时候会发生someOtherVar非假的?假的
时候会发生什么someOtherVar?
只是学习JavaScript,我很好奇与AND运算符一起分配会发生什么.
javascript variable-assignment logical-operators and-operator
此方法搜索第一组单词字符(即:)[a-zA-Z0-9_],返回第一个匹配的组或None出现故障.
def test(str):
m = re.search(r'(\w+)', str)
if m:
return m.group(1)
return None
Run Code Online (Sandbox Code Playgroud)
相同的功能可以改写为:
def test2(str):
m = re.search(r'(\w+)', str)
return m and m.group(1)
Run Code Online (Sandbox Code Playgroud)
这工作原理相同,并且是记录在案的行为; 作为此页中明确指出:
表达式
x and y首先评估x; 如果x为false,则返回其值; 否则,y将评估并返回结果值.
但是,作为一个布尔运算符(它甚至在手册上都这么说),我期望and返回一个布尔值.结果,当我发现(如何)这有效时,我感到很惊讶.
有什么其他用例,和/或这种相当不直观的实现的理由是什么?