Zoeken op website

Waarom geeft typescript && een tekenreekswaarde terug in plaats van een boolean


Waarom retourneert deze code een URI-tekenreekswaarde in plaats van een boolean?

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

Dit is het voorbeeld https://stackblitz.com/edit/typescript-f75jhs

Antwoord #1

Het gebeurt omdat de operatoren && en || kortgesloten zijn (je kunt hier meer over lezen)

Wat betekent dat voor je code hierboven?

Laat me proberen het uit te leggen in een reeks van bewerkingen die worden uitgevoerd:

  1. Evalueer de uitdrukking links van de booleaanse operator &&, namelijk this.workspace;

  2. Als this.workspace waarachtig is, blijf dan evalueren;

  3. Evalueer de expressie rechts van de booleaanse operator &&, namelijk this.workspace.uri;

  4. Als this.workspace.uri waarachtig is, dan is de hele uitdrukking waarachtig en kunnen we teruggeven wat aan de rechterkant van de operator stond (in jouw geval this.workspace.uri;

Maar als de uitdrukking aan de linkerkant falsey is en je hier de booleaanse AND gebruikt, heeft het geen zin om de andere uitdrukkingen aan de rechterkant te evalueren, omdat de hele AND-uitdrukking toch FALSE zal zijn. Daarom kunnen we een "short circuit" toepassen.

Gerelateerde artikelen