相关疑难解决方法(0)

分配中的Javascript AND运算符

我知道在JavaScript中你可以这样做:

var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";
Run Code Online (Sandbox Code Playgroud)

其中变量oneOrTheOther将在第一表达式的值,如果它不是null,undefinedfalse.在这种情况下,它被分配给第二个语句的值.

但是,oneOrTheOther当我们使用逻辑AND运算符时,变量会分配给什么?

var oneOrTheOther = someOtherVar && "some string";
Run Code Online (Sandbox Code Playgroud)

什么时候会发生someOtherVar非假的?假的
时候会发生什么someOtherVar

只是学习JavaScript,我很好奇与AND运算符一起分配会发生什么.

javascript variable-assignment logical-operators and-operator

59
推荐指数
4
解决办法
2万
查看次数

Python中的"布尔"操作(即:和/或运算符)

此方法搜索第一组单词字符(即:)[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返回一个布尔值.结果,当我发现(如何)这有效时,我感到惊讶.

有什么其他用例,和/或这种相当不直观的实现的理由是什么?

python boolean-expression least-astonishment

11
推荐指数
2
解决办法
5967
查看次数