为什么此代码返回uri字符串值而不是布尔值?
public getContext(): string | undefined {
return this.workspace && this.workspace.uri;
}
答案 0 :(得分:2)
之所以会这样,是因为运算符&&
和||
短路了(您可以详细了解here)
这对您上面的代码意味着什么?
让我尝试以一系列执行的操作来解释它:
从布尔运算符&&
的左边开始计算表达式,该表达式为this.workspace
;
如果this.workspace
是真实的,则继续评估;
从布尔运算符&&
(即this.workspace.uri
)的右边评估表达式;
如果this.workspace.uri
是真实的,则整个表达式都是真实的,我们可以返回运算符右侧的内容(在您的情况下为this.workspace.uri
;
但是,如果左侧的表达式为false且您在此处使用布尔值AND,则在右侧评估其他表达式是没有意义的,因为整个AND表达式无论如何都是FALSE。因此,我们可以“短路”。