57
*/
delete todoModel.completed;
/*
completed changed
Isso será mudado por
deleção
O valor atual é
"indefinido"
Variáveis
Existem novas maneiras de
trabalhar com variáveis, como usar
a instrução
Let
no lugar de
Var
,
FRP D GHíQL©¥R GH FRQVWDQWHV
com
Const
.
Let
é similar a
Var
ao declarar
variáveis, mas usa “block scoping”
em vez de “function scoping”, que
VLJQLíFD TXH D YDUL£YHO GHFODUDGD
não estará disponível além do bloco.
Exemplo:
{
var irrestrito =
'disponível sempre';
let restrito =
'indisponível depois do
bloco de código';
console.log(irrestrito,
restrito); // "disponível
sempre" "indisponível depois
do bloco de código'"
}
console.log(irrestrito); //
"disponível sempre"
console.log(restrito); //
ReferenceError
A variável “restrito” setada
por
Let
não está disponível
fora do bloco de código em que
é declarada.
Iterators
Foram melhorados para tornar
mais fácil trabalhar com coleções
de dados. Um exemplo é a adição
de loop em for/of, tornando mais
fácil o acesso a cada valor de
um collection. Novos tipos de
collection (mapa e conjuntos) foram
adicionadas aos objetos e matrizes.
Funções Arrow
Funções do tipo Arrow podem
VHU GHíQLGDV XVDQGR VHWDV FRPR
=>), economizando digitação e
levando a um código mais limpo.
Além disso, funções de seta podem
ser usadas em Immediately-Invoked
Function Expressions.
Exemplo:
> var square = x => x * x;
> square(5)
25
Simples, limpo e elegante.
Exemplo de concatenação
de arrays:
> var a = [3, 4, 5]
[3, 4, 5]
> var b = [1, 2, ...a]
[1, 2, 3, 4,
5]
Compressão de arrays:
var arr = [x for (x of a) IF
(x.color === ‘blue’)]
var arr = [square(x) for (x
of [1,2,3,4,5])]
Strings
Templates para strings
corrigem algumas das limitações
do JavaScript em lidar com eles,
suportando agora strings de
múltiplas linhas e sequências de
escape (como em HTML).
Uma das funções mais
utilizadas em programação,
e que já existe em uma
diversidade de linguagens,
é a capacidade de verificar
se determinada “string” é
iniciada com determinada
“substring”. Essa capacidade foi
implementada na nova versão
do JS e funciona desta forma:
String.prototype.
startsWith = function (str){
return this.
indexOf(str) === 0;
}
Métodos:
String.prototype.
startsWith(searchString[,
position]);
O método startsWith usa duas
YDUL£YHLV D VWULQJ D VHU YHULíFDGD
e a posição em que a pesquisa
deve iniciar. Por padrão “position”
é zero (0), e a pesquisa se inicia no
primeiro caractere da string.
var str = 'Bom dia!';
var result = str.
startsWith('Bom');
// retorna "true" na tela
console.log(result);
// verificar a partir do
segundo caractere
result = str.
startsWith('om', 1);
// retorna "true" na tela
console.log(result);
Além de
String.prototype.
startsWith()
também é possível
YHULíFDU VH XPD VWULQJ WHUPLQD
com outra substring, com
String.
prototype.endsWith()
.
var str = 'Bom dia!';
var result = str.
endsWith('ia!');
// retorna "true" na tela
console.log(result);
Arrays
Há uma série de melhorias
em arrays, incluindo a capacidade
para criar novos arrays por meio
de arrays existentes e a partir de
FULW«ULRV GHíQLGRV SHOR XVX£ULR
Além disso, o “spread operator”
permite “explodir” um array em
seus elementos individuais.
Exemplos:
Filtrando um array:
[ x for (x of a) if (x.color
=== ‘blue’) ]
Mapeando um array:
[ square(x) for (x of
[1,2,3,4,5]) ]
Eventualmente, é preciso
usar um array como argumento
em uma função. Para isso o JS 6.0
[
EXISTEM NOVAS MANEIRAS DE
TRABALHAR COM VARIÁVEIS, COMO USAR A
INSTRUÇÃO LET NO LUGAR DE VAR
]
tem um novo tipo de operador,
chamado Spread Operator, que
facilita o processo.
Variável com valores:
var comprasBox = ['leite',
'queijo', 'yogurte'];
Acrescentar novo valor a
variável comprasBox
store.add('manteiga', ...
comprasBox);
A variável comprasBox agora
contém os valores ['leite',
'queijo', 'yogurte',
'manteiga'] graças ao
operador “...”.
Generators
Generators permitem
criar rotinas com contexto de
execuções suspensas – gerar
valores até que estes não
existam mais. Linguagens como
Python, Smalltalk, Icon já usam
generators e agora o JavaScript
também pode.
'H IRUPD VLPSOLíFDGD
generators são corrotinas de
primeira classe, apresentadas
como objetos que contêm
loops, sequências, que estejam
suspensas ou aguardando até que
sejam executadas.
Um exemplo para gerar uma
VHTX¬QFLD ÛLQíQLWDÜ GH )LERQDFFL
function*
fibonacciGenerator() {
var [n, m] = [0, 1];
while (true) {
yield n;
[n, m] = [m, m + n];
}
}
var fibonacci =
fibonacciGenerator();
for (let i = 0; i < 10;
i++) {
console.log(fibonacci.
next().value)
}
REVISTA LOCAWEB