ECMAScript - sabrinabm94/javascript GitHub Wiki
European Computer Manufacture`s Association - ECMA Internation
É uma organização global que cria padrões para utilização da comunicação envolvendo a tecnologia.
ECMAScript
O ECMAScript é um conjunto de regras que os criadores de navegadores devem seguir para garantir a padronização e suporte do javascript, que é linguagem que roda nos navegadores.
Então o ECMAScript são as diretivas do javascript que estão sempre em atualização para fazer o alinhamento entre os navegadores e a evolução do js.
ES6 - ECMAScript 6 - ES2015
Após 2015 o ECMAscript passou a ser relacionado ao ano e não mais a versão.
Infelizmente a maioria dos navegadores ainda não suportam as novas diretivas do ES6, que foram feitas para evoluir alguns problemas antigos do js e escalar melhor em aplicações complexas.
Para contornar isso surgiu o transpiler Babel, que converte o código escrito em ES6 para ES5 no qual os navegadores tem suporte.
Declaração de variáveis
O let foi criado para corrigir problemas de declaração de variáveis que acontecia com var, como também aplicar o escopo de variável por bloco e não pro função.
Já o const foi criado para valores estáticos, ou seja, após ser atribuído um valor a uma const, esse não será mais alterado, somente seu estado interno, oferecendo ganhos de performance.
var = a;
let a = 1
a = 2 // Ok
const b = 1
b = 2 // Uncaught SyntaxError "b" is read-only
//internal state change
const obj = {
one: 1
}
obj[1] = 2; //{one: 1, 1:2}
Em resumo:
Não utilizar mais o var.
Declarar as variável como const por padrão e somente as que terão retribuição de valores deverão ser let.
Valores padrão para parâmetros
y = 1 | null; // ES5
const multiply = (x, y = 1) => { // ES6
return x * y
}
const multiply = (x, y = 1) => x * y // ES6 reduzido
multiply(3, 2)
Rest parameters
Parecem ser uma lista, mas é um objeto arguments passado como parâmetro da função
var sum = function() {
var result = 0;
for (var i=0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
//reduzido
const sum = (...numbers) => numbers.reduce((acc, current) => acc + current, 0)
sum(1, 2, 3, 4, 5) // 15
Programação funcional
Arrow function
É uma forma de simplificar funções e corrigir problemas de escopo do js que era necessário user o this.
Function
hello = function() {
return "Hello World!";
}
Arrow function
hello = () => {
return "Hello World!";
}
console.log(hello());
Arrow function with parameters
hello = (val) => "Hello " + val;
hello("World");
Desistruração (destructuring)
// Importação de libs
//estruturado
var ReactRouter = require('react-router');
var Route = ReactRouter.Route;
var Link = ReactRouter.Link;
var Router = ReactRouter.Router;
//deistruturado
const {
Route,
Link,
Router
} = require('react-router')
// Objeto
const person = { name: 'Sabrina', age: 29 }
const {name, age} = person
console.log(name) // 'Sabrina'
console.log(age) // 29
Modulos
export function sum(x, y) { //exportação de modulo
return x + y
}
import { sum } from 'lib' //importação de modulo em outro arquivo e utilização
sum(1, 2) // 3
Padrão
As vezes precisamos fazer apenas uma exportação por arquivo, então podemos usar o padrão