# Estrutura condicional

%[https://www.youtube.com/watch?v=xt53HaGhOsU&list=PLcQQun5wwBt6UHHlRv6wcFVgahOHPAhWb&index=5] 

[![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768417689084/0d93df31-1868-4e62-b3e8-25df344bb4a8.jpeg align="center")](https://www.udemy.com/course/logica-de-programacao-com-pascalzim/?referralCode=E547897C16AD4FF23AED)

Existem vários locais em um script onde são tomadas as decisões que determinam quais linhas de código devem ser executadas em seguida.

```javascript
// palavra-chave (variável) = valor da variável
let age = 26

if(age > 18) {
	document.write('Você é maior de idade.');
} else {
	document.write('Você é menor de idade.');
}
```

A instrução **if**...**else** verifica uma condição.

Se retornar **true**, o primeiro bloco de código é executado.

Se a condição retornar **false**, o segundo bloco de código é executado.

---

**Podemos testar várias variantes de uma condição.**

```javascript
// palavra-chave     nome da variável    operador de atribuição    valor da variável
let             objectDate                 =                   new Date(); 
let year = objectDate.getFullYear();

if(year == 2018) {
		document.write(`Feliz ${year} para todos!`);
} else if(year == 2019) {
		document.write(`Feliz ${year} para todos!`);
} else if(year == 2020) {
		document.write(`Feliz ${year} para todos!`);
} else {
		document.write(`Feliz ${year} para todos!`);
}
```

Outra forma de fazer verificação só que de um jeito mais simples é com o operador condicional “ternário”

**A sintaxe é:**

```javascript
let result = condition ? value1 : value2;
```

Exemplo:

```javascript
// palavra-chave    nome da variável  operador de atribuição   valor da variável
let                age                   =                    20;
let accessAllowed = (age > 18) ? 'Você é maior de idade!' : 'Você não é maior de idade!';


console.log(accessAllowed);
// OUTPUT: 'Você é maior de idade!'
```

```javascript
// palavra-chave    nome da variável  operador de atribuição   valor da variável
let                age                   =                    20;
let message = (age < 3)  ? 'Hi, baby!' :
																															 (age < 18) ? 'Você é de menor!' :
																															 (age > 18) ? 'Você é de maior!' :
																															 'Qual sua idade verdadeira?';  
console.log(message) // OUTPUT: 'Você é de maior!'
```

---

**Operador de coalescência nulo**

O operador de coalescência nulo é escrito com dois pontos de interrogação **??**

Suponha que nós temos dados de um usuário em variáveis **firstName**, **lastName**, **nickName**.

Todos eles podem ser indefinidos, se o usuário decidir não inserir um valor.

Gostaríamos de exibir o nome do usuário utilizando uma dessas variáveis ou mostrar um nome default se todas elas forem indefinidas.

Exemplo:

```javascript
// palavra-chave    nome da variável  operador de atribuição   valor da variável
let                  firstName               =                     null;
let                  lastName                =                     null;
let                  nickName                =                  'Developer';

document.write(firstName ?? lastName ?? nickName ?? 'AreaDev');
// OUTPUT: 'Developer'
```

---

**Declaração SWITCH**

Uma instrução **switch** pode substituir várias verificações **if**.

Sintaxe:

```javascript
switch(x) {
	case 'value1': // if (x === 'value1')
		...
	[break]

  case 'value2': // if(x === 'value2')
		...
	[break]

default:
	...
	[break]

}
```

O **switch** tem um ou mais blocos **case** e um padrão opcional.

Inicia com uma variável chamada ***valor do switch***\*.\* Cada caso indica um possível valor para essa variável e o código que deve ser executado se a variável corresponder a esse valor.

Exemplo:

```javascript
// palavra-chave    nome da variável  operador de atribuição   valor da variável
let                year                   =                    18;
let                msg;

switch(year) {

		case 18:
				msg = `Você tem ${year} anos e já é de maior.`;
		break;

		case 16:
				msg = `Você tem ${year} anos e é menor de idade.`;
		break;
		
		case 10:
				msg = `Você tem ${year} anos e é muito jovem ainda.`;
		break;
		
		default:
				msg = `Informe sua idade verdadeira!`;
		break;
		
}
```

Para conhecer afundo todos os tipos de operadores no JavaScript, acesse os Links abaixo:

> [Operadores Lógicos](https://areadevs.notion.site/Operadores-L-gicos-1de871568c9d4030bb29dc140b755dd0)  
> [Operadores Matemáticos](https://areadevs.notion.site/Operadores-Matem-ticos-2eff26c7ffa9428dbd1028c6df70bfe7)

---

[![](https://cdn.hashnode.com/res/hashnode/image/upload/v1768417750677/45b1a5d4-75cd-4b1c-9b4f-555f4d7392a5.jpeg align="center")](https://www.udemy.com/course/logica-de-programacao-com-pascalzim/?referralCode=E547897C16AD4FF23AED)

### Conclusão

Entender as estruturas de controle de fluxo no JavaScript, como `if...else`, o operador ternário, o operador de coalescência nulo e a declaração `switch`, é crucial para escrever código eficiente e dinâmico. Essas ferramentas permitem tomar decisões no código de forma clara e organizada, respondendo adequadamente a diferentes condições e valores. Aprofundar-se nesses conceitos e em outros operadores lógicos e matemáticos fortalecerá suas habilidades como desenvolvedor JavaScript, tornando seu código mais robusto e adaptável.
