Почему typcript && возвращает строковое значение вместо логического - PullRequest
0 голосов
/ 29 апреля 2020

Почему этот код возвращает строковое значение uri вместо логического?

public getContext(): string | undefined {    
    return this.workspace && this.workspace.uri;
  }

Это пример https://stackblitz.com/edit/typescript-f75jhs

1 Ответ

1 голос
/ 29 апреля 2020

Это происходит потому, что операторы && и || замкнуты накоротко (об этом вы можете прочитать здесь )

Что это значит для вашего кода выше?

Позвольте мне попытаться объяснить это в последовательности выполняемых операций:

  1. Оценить выражение слева от логического оператора &&, то есть this.workspace ;

  2. Если this.workspace верно, то продолжить оценку;

  3. Оценить выражение справа от логического оператора &&, который равен this.workspace.uri;

  4. Если this.workspace.uri верно, тогда все выражение верно, и мы можем вернуть то, что было справа от оператора (в вашем случае this.workspace.uri;

Но, если выражение слева является ложным, и вы используете логическое И здесь, нет смысла оценивать другие выражения справа, потому что все выражение И будет ЛОЖЬ в любом случае. Следовательно, мы можем «замкнуть накоротко».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...