Declaração de variáveis

Declarações usando var

A palavra var é a maneira mais comum para declaração de uma variável. Há algumas questões ao utilizar var em JavaScript. Por exemplo:

function f() {
    var a = 10;
    return function g() {
        var b = a + 1;
        return b;
    }
}
var g = f();
g(); // retorna 11;

Nesse caso, a função g(), declarada dentro de f() tem acesso à variável a. Assim, entende-se que a declaração de a tem escopo de função (está visível dentro da função f() também para sub-funções declaradas dentro dela, como é o caso da função g()).

Outro exemplo.

function f(inicializar: boolean) {
    if (inicializar) {
        var x = 10;
    }

    return x;
}

f(true);  // retorna 10
f(false); // retorna undefined

A variável x foi declarada dentro do if, entretanto, está sendo acessada ao final da função f().

Declarações usando let

Declarações let são similares a declarações var, com a diferença que utilizam escopo mais restrito. Por exemplo:

function f(inicializar: boolean) {
    if (inicializar) {
        let x = 10;
    }
    return x; // erro variável não acessível
}

Nesse caso, a variável x foi declarada dentro do if utilizando let. Assim, ela só pode ser acessada dentro desse escopo.

O mesmo acontece em laços de repetição.

for(let i = 0; i < 10; i++) {
    console.log(i);
}

No caso de laços de repetição, é criado um escopo novo e exclusivo para cada passo da execução.

Declarações const

Declarações const são como let, mas o valor da variável não pode ser modificado depois da atribuição.

const ladosDoTriangulo: number = 3;

É importante diferenciar o conceito de const de variáveis imutáveis.

const pessoa = {
    id : 1,
    nome : 'José'
};

pessoa.id = 10;
pessoa.nome = 'Maria';

Neste caso, não se pode atribuir novo valor para a variável pessoa, declara com const, mas, como é um objeto, é possível modificar os valores dos seus atributos.

Desconstrução

Desconstrução de Array

A desconstrução de array permite "expandir" os valores dos elementos de um array, atribuindo-os a variáveis independentes.

let ponto: number[] = [1, 5];
let [x, y] = ponto;
console.log(x); // imprime 1
console.log(y); // imprime 5

Esse recurso também é interessante para trocar os valores entre duas variáveis.

let [x, y] = [y, x];

Outro recurso de desconstrução de array é acessar os elementos restantes por meio da sintaxe ...nome.

let [primeiro, segundo, ...outros] = [1, 2, 3, 4, 5];
console.log(primeiro); // imprime 1
console.log(segundo);  // imprime 2
console.log(outros);   // imprime [3, 4, 5]

Desconstrução de Object

Também é possível desconstruir objetos.

let o = {
    a: 'foo',
    b: 12,
    c: false
};
let {a, b} = o;
console.log(a); // imprime foo
console.log(b); // imprime 12

Neste caso, é feita uma correspondência entre os nomes das variáveis e os nomes dos atributos do objeto. O código a seguir teria, portanto, um erro.

let o = {
    a: 'foo',
    b: 12,
    c: false
};
let {x, y} = o; // erro: objeto o não possui atributos x e y

O código a seguir também é válido e usa o mesmo princípio.

let {x, y} = {x: 1, y: 5};

A definição de tipos associada a esse recurso torna o código um pouco difícil de entender, na verdade.

let {x, y}: {x: number, y: number} = {x: 1, y: 5};

results matching ""

    No results matching ""