ECMAScript 2015 foi a segunda grande revisão do JavaScript.
ECMAScript 2015 também é conhecido como ES6 e ECMAScript 6.
Este capítulo descreve os recursos mais importantes do ES6.
A palavra-chave let
A palavra-chave const
Funções de seta
O operador
Para de
Objetos de mapa
Definir objetos
Aulas
Promessas
Símbolo
Parâmetros padrão
Parâmetro de descanso da função
String.inclui()
String.startsWith()
String.endsWith()
Array.from()
Chaves de matriz()
Array encontrar()
Matriz findIndex()
Novos métodos matemáticos
Novas propriedades numéricas
Novos métodos numéricos
Novos métodos globais
Entradas de objeto
Módulos JavaScript
Safari 10 e Edge 14 foram os primeiros navegadores a oferecer suporte total ao ES6:
Chrome 58 | Edge 14 | Firefox 54 | Safari 10 | Opera 55 |
Jan 2017 | Aug 2016 | Mar 2017 | Jul 2016 | Aug 2018 |
A palavra-chave let
permite que você declare uma variável com escopo do bloco.
var x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Redeclaring a Variable Using let</h2>
<p id="demo"></p>
<script>
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Leia mais sobre let
no capítulo: JavaScript Let.
A palavra-chave const
permite declarar uma constante (um Variável JavaScript com um valor constante).
As constantes são semelhantes às variáveis let, exceto que o valor não pode ser alterado.
var x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Declaring a Variable Using const</h2>
<p id="demo"></p>
<script>
var x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
Leia mais sobre const
no capítulo: JavaScript Const.
As funções de seta permitem uma sintaxe curta para escrever expressões de função.
Você não precisa da palavra-chave function
, da palavra-chave return
e da palavra-chave colchetes.
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrow Functions</h2>
<p>With arrow functions, you don't have to type the function keyword, the return keyword, and the curly brackets.</p>
<p>Arrow functions are not supported in IE11 or earlier.</p>
<p id="demo"></p>
<script>
const x = (x, y) => x * y;
document.getElementById("demo").innerHTML = x(5, 5);
</script>
</body>
</html>
As funções de seta não possuem seu próprio isto
. Eles não são adequados para definir métodos de objetos.
As funções de seta não são içadas. Eles devem ser definidos antes de serem usados.
Usando const
é mais seguro do que usar var
, porque uma expressão de função é sempre um valor constante.
Você só pode omitir a palavra-chave return
e as chaves se a função for uma única instrução. Por isso, pode ser um bom hábito mantê-los sempre:
const x = (x, y) => { return x * y };
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrow Functions</h2>
<p>Arrow functions are not supported in IE11 or earlier.</p>
<p id="demo"></p>
<script>
const x = (x, y) => { return x * y };
document.getElementById("demo").innerHTML = x(5, 5);
</script>
</body>
</html>
Saiba mais sobre Arrow Functions no capítulo: Função de seta JavaScript.
O operador ... expande um iterável (como um array) em mais elementos:
const q1 = ["Jan", "Feb", "Mar"];
const q2 = ["Apr", "May", "Jun"];
const q3 = ["Jul", "Aug", "Sep"];
const q4 = ["Oct", "Nov", "May"];
const year = [...q1, ...q2, ...q3, ...q4];
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Operators</h1>
<h2>The ... Operator</h2>
<p>The "spread" operator spreads elements of iterable objects:</p>
<p id="demo"></p>
<script>
const q1 = ["Jan", "Feb", "Mar"];
const q2 = ["Apr", "May", "Jun"];
const q3 = ["Jul", "Aug", "Sep"];
const q4 = ["Oct", "Nov", "May"];
const year = [...q1, ...q2, ...q3, ...q4];
document.getElementById("demo").innerHTML = year;
</script>
</body>
</html>
O operador ... pode ser usado para expandir um iterável em mais argumentos para chamadas de função:
const numbers = [23,55,21,87,56];
let maxValue = Math.max(...numbers);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Operators</h1>
<h2>The ... Operator</h2>
<p>The "Spread" operator can be used to expand an iterable into more arguments for function calls:</p>
<p id="demo"></p>
<script>
const numbers = [23,55,21,87,56];
let maxValue = Math.max(...numbers);
document.getElementById("demo").innerHTML = maxValue;
</script>
</body>
</html>
A instrução JavaScript for/of
faz um loop através dos valores de objetos iteráveis.
for/of
permite fazer loop em estruturas de dados que são iteráveis, como Arrays, Strings, Maps, NodeLists e muito mais.
O loop for/of
tem a seguinte sintaxe:
for (variable of iterable) {
// code block to be executed
}
variável - Para cada iteração o valor da próxima propriedade é atribuído à variável. Variável pode ser declarada com const
, let
ou var
.
iterável - Um objeto que possui propriedades iteráveis.
const cars = ["BMW", "Volvo", "Mini"];
let text = "";
for (let x of cars) {
text += x + " ";
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript For Of Loop</h2>
<p>The for of statement loops through the values of any iterable object:</p>
<p id="demo"></p>
<script>
const cars = ["BMW", "Volvo", "Mini"];
let text = "";
for (let x of cars) {
text += x + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
let language = "JavaScript";
let text = "";
for (let x of language) {
text += x + " ";
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript For Of Loop</h2>
<p>The for of statement loops through the values of an iterable object.</p>
<p id="demo"></p>
<script>
let language = "JavaScript";
let text = "";
for (let x of language) {
text += x + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Saiba mais no capítulo: JavaScript Loop For/In/Of.
Ser capaz de usar um Objeto como chave é um recurso importante do Mapa.
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Creating a Map from an Array:</p>
<p id="demo"></p>
<script>
// Create a Map
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
document.getElementById("demo").innerHTML = fruits.get("apples");
</script>
</body>
</html>
Saiba mais sobre objetos Map e a diferença entre um Map e um Array no capítulo: Mapas JavaScript.
// Create a Set
const letters = new Set();
// Add some values to the Set
letters.add("a");
letters.add("b");
letters.add("c");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Sets</h2>
<p>Add values to a Set:</p>
<p id="demo"></p>
<script>
// Create a Set
const letters = new Set();
// Add Values to the Set
letters.add("a");
letters.add("b");
letters.add("c");
// Display set.size
document.getElementById("demo").innerHTML = letters.size;
</script>
</body>
</html>
Saiba mais sobre objetos Set no capítulo: Conjuntos JavaScript.
Classes JavaScript são modelos para objetos JavaScript.
Use a palavra-chave class
para criar uma classe.
Sempre adicione um método chamado constructor()
:
class ClassName {
constructor() { ... }
}
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
O exemplo acima cria uma classe chamada “Car”.
A classe possui duas propriedades iniciais: “nome” e “ano”.
Uma classe JavaScript não é um objeto.
É um modelo para objetos JavaScript.
Quando você tem uma classe, você pode usá-la para criar objetos:
const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Classes</h1>
<p>Creating two car objects from a car class:</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);
document.getElementById("demo").innerHTML =
myCar1.name + " " + myCar2.name;
</script>
</body>
</html>
Saiba mais sobre classes no capítulo: Classes JavaScript.
Uma promessa é um objeto JavaScript que vincula "Código de produção" e "Código de consumo".
“Produzir Código” pode levar algum tempo e “Consumir Código” deve aguardar o resultado.
const myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)
myResolve(); // when successful
myReject(); // when error
});
// "Consuming Code" (Must wait for a fulfilled Promise).
myPromise.then(
function(value) { /* code if successful */ },
function(error) { /* code if some error */ }
);
const myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("I love You !!"); }, 3000);
});
myPromise.then(function(value) {
document.getElementById("demo").innerHTML = value;
});
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Promise</h2>
<p>Wait 3 seconds (3000 milliseconds) for this page to change.</p>
<h1 id="demo"></h1>
<script>
const myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function(){ myResolve("I love You !!"); }, 3000);
});
myPromise.then(function(value) {
document.getElementById("demo").innerHTML = value;
});
</script>
</body>
</html>
Saiba mais sobre Promessas no capítulo: Promessas JavaScript.
Um símbolo JavaScript é um tipo de dados primitivo como Number, String ou Boolean.
Representa um identificador "oculto" exclusivo que nenhum outro código pode acessar acidentalmente.
Por exemplo, se diferentes codificadores quiserem adicionar uma propriedade person.id a um objeto person pertencente a um código de terceiros, eles poderiam misturar os valores uns dos outros.
Usar Symbol() para criar identificadores exclusivos resolve este problema:
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
let id = Symbol('id');
person[id] = 140353;
// Now person[id] = 140353
// but person.id is still undefined
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Using JavaScript Symbol()</h2>
<p id="demo"></p>
<script>
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
let id = Symbol('id');
person[id] = 140353;
document.getElementById("demo").innerHTML = person[id] + " " + person.id;
</script>
</body>
</html>
Os símbolos são sempre únicos.
Se você criar dois símbolos com a mesma descrição eles terão valores diferentes:
Symbol("id") == Symbol("id"); // false
ES6 permite que os parâmetros de função tenham valores padrão.
function myFunction(x, y = 10) { // y is 10 if not passed or undefined return x + y;
}
myFunction(5); // will return 15
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>Default Parameter Values</h2>
<p>If y is not passed or undefined, then y = 10:</p>
<p id="demo"></p>
<script>
function myFunction(x, y = 10) {
return x + y;
}
document.getElementById("demo").innerHTML = myFunction(5);
</script>
</body>
</html>
O parâmetro rest (...) permite que uma função trate um número indefinido de argumentos como um array:
function sum(...args) {
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>The Rest Parameter</h2>
<p>The rest parameter (...) allows a function to treat an indefinite number of arguments as an array:</p>
<p id="demo"></p>
<script>
function sum(...args) {
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
O método includes()
retorna true
se uma string contém um valor especificado, caso contrário falso
:
let text = "Hello world, welcome to the universe.";
text.includes("world") // Returns true
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The includes() Method</h2>
<p>Check if a string includes "world":</p>
<p id="demo"></p>
<p>The includes() method is not supported in Internet Explorer.</p>
<script>
let text = "Hello world, welcome to the universe.";
document.getElementById("demo").innerHTML = text.includes("world");
</script>
</body>
</html>
O método startsWith()
retorna true
se uma string começar com um valor especificado, caso contrário false
:
let text = "Hello world, welcome to the universe.";
text.startsWith("Hello") // Returns true
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The startsWith() Method</h2>
<p>Check if a string starts with "Hello":</p>
<p id="demo"></p>
<p>The startsWith() method is not supported in Internet Explorer.</p>
<script>
let text = "Hello world, welcome to the universe.";
document.getElementById("demo").innerHTML = text.startsWith("Hello");
</script>
</body>
</html>
O método endsWith()
retorna true
se uma string terminar com um valor especificado, caso contrário false
:
var text = "John Doe";
text.endsWith("Doe") // Returns true
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Strings</h2>
<p>Check if a string ends with "Doe":</p>
<p id="demo"></p>
<p>The endsWith() method is not supported in Internet Explorer.</p>
<script>
let text = "John Doe";
document.getElementById("demo").innerHTML = text.endsWith("Doe");
</script>
</body>
</html>
O método Array.from()
retorna um objeto Array de qualquer objeto com comprimento propriedade ou qualquer objeto iterável.
Crie um array a partir de uma string:
Array.from("ABCDEFG") // Returns [A,B,C,D,E,F,G]
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The from() Method</h2>
<p>Return an array object from any object with a length property or any iterable object.</p>
<p id="demo"></p>
<script>
const myArr = Array.from("ABCDEFG");
document.getElementById("demo").innerHTML = myArr;
</script>
<p>The Array.from() method is not supported in Internet Explorer.</p>
</body>
</html>
O método keys()
retorna um objeto Array Iterator com as chaves de um array.
Crie um objeto Array Iterator, contendo as chaves do array:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();
let text = "";
for (let x of keys) {
text += x + "<br>";
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The keys() Method</h2>
<p>Return an Array Iterator object with the keys of the array:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();
let text = "";
for (let x of keys) {
text += x + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
<p>Array.keys() is not supported in Internet Explorer.</p>
</body>
</html>
O método find()
retorna o valor do primeiro elemento do array que passa um função de teste.
Este exemplo encontra (retorna o valor de ) o primeiro elemento que é maior mais de 18:
const numbers = [4, 9, 16, 25, 29];
let first =
numbers.find(myFunction);
function myFunction(value, index, array) {
return
value > 18;
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The find() Method</h2>
<p id="demo"></p>
<script>
const numbers = [4, 9, 16, 25, 29];
let first = numbers.find(myFunction);
document.getElementById("demo").innerHTML = "First number over 18 is " + first;
function myFunction(value, index, array) {
return value > 18;
}
</script>
</body>
</html>
Observe que a função leva 3 argumentos:
O valor do item
O índice do item
A própria matriz
O método findIndex()
retorna o índice do primeiro elemento do array que passa em uma função de teste.
Este exemplo encontra o índice do primeiro elemento maior que 18:
const numbers = [4, 9, 16, 25, 29];
let first =
numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return
value > 18;
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The findIndex() Method</h2>
<p id="demo"></p>
<script>
const numbers = [4, 9, 16, 25, 29];
document.getElementById("demo").innerHTML = "First number over 18 has index " + numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
</script>
</body>
</html>
Observe que a função leva 3 argumentos:
O valor do item
O índice do item
A própria matriz
ES6 adicionou os seguintes métodos ao objeto Math:
Math.trunc()
Math.sign()
Math.cbrt()
Math.log2()
Math.log10()
Math.trunc(x)
retorna a parte inteira de x:
Math.trunc(4.9); // returns 4
Math.trunc(4.7); // returns 4
Math.trunc(4.4); // returns 4
Math.trunc(4.2); // returns 4
Math.trunc(-4.2); // returns -4
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Math.trunc()</h2>
<p>Math.trunc(x) returns the integer part of x:</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Math.trunc(4.7);
</script>
</body>
</html>
Math.sign(x)
retorna se x for negativo, nulo ou positivo:
Math.sign(-4); // returns -1
Math.sign(0); // returns 0
Math.sign(4); // returns 1
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Math.sign()</h2>
<p>Math.sign(x) returns if x is negative, null or positive:</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Math.sign(4);
</script>
</body>
</html>
Math.cbrt(x)
retorna a raiz cúbica de x:
Math.cbrt(8); // returns 2
Math.cbrt(64); // returns 4
Math.cbrt(125); // returns 5
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Math.cbrt()</h2>
<p>Math.cbrt(x) returns the cube root of x:</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Math.cbrt(8);
</script>
</body>
</html>
Math.log2(x)
retorna o logaritmo de base 2 de x:
Math.log2(2); // returns 1
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Math.log2()</h2>
<p>Math.log2() returns the base 2 logarithm of a number.</p>
<p>How many times must we multiply 2 to get 8?</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Math.log2(8);
</script>
</body>
</html>
Math.log10(x)
retorna o logaritmo de base 10 de x:
Math.log10(10); // returns 1
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Math.log10()</h2>
<p>Math.log10() returns the base 10 logarithm of a number.</p>
<p>How many times must we multiply 10 to get 1000?</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Math.log10(1000);
</script>
</body>
</html>
ES6 adicionou as seguintes propriedades ao objeto Number:
EPSILON
MIN_SAFE_INTEGER
MAX_SAFE_INTEGER
let x = Number.EPSILON;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Number Object Properties</h2>
<p>EPSILON</p>
<p id="demo"></p>
<script>
let x = Number.EPSILON;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
let x = Number.MIN_SAFE_INTEGER;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Number Object Properties</h2>
<p>MIN_SAFE_INTEGER</p>
<p id="demo"></p>
<script>
let x = Number.MIN_SAFE_INTEGER;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
let x = Number.MAX_SAFE_INTEGER;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>Number Object Properties</h2>
<p>MAX_SAFE_INTEGER</p>
<p id="demo"></p>
<script>
let x = Number.MAX_SAFE_INTEGER;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
ES6 adicionou 2 novos métodos ao objeto Number:
Number.isInteger()
Number.isSafeInteger()
O método Number.isInteger()
retorna true
se o argumento for um número inteiro.
Number.isInteger(10); // returns true
Number.isInteger(10.5); // returns false
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>
<h2>The isInteger() Method</h2>
<p>The isInteger() method returns true if the argument is an integer.</p>
<p>Otherwise it returns false.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
Number.isInteger(10) + "<br>" + Number.isInteger(10.5);
</script>
</body>
</html>
Um número inteiro seguro é um número inteiro que pode ser representado exatamente como um número de precisão dupla.
O método Number.isSafeInteger()
retorna true
se o argumento for um número inteiro seguro.
Number.isSafeInteger(10); // returns true
Number.isSafeInteger(12345678901234567890); // returns false
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>
<h2>The isSafeInteger() Method</h2>
<p>The isSafeInteger() method returns true if the argument is a safe integer.</p>
<p>Otherwise it returns false.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
Number.isSafeInteger(10) + "<br>" + Number.isSafeInteger(12345678901234567890);
</script>
</body>
</html>
Inteiros seguros são todos números inteiros de -(253 - 1) a +(253 - 1).
Isto é seguro: 9007199254740991. Isto não é seguro: 9007199254740992.
ES6 adicionou 2 novos métodos de números globais:
isFinite()
isNaN()
O método global isFinite()
retorna false
se o argumento for Infinito
ou NaN
.
Caso contrário, retorna true
:
isFinite(10/0); // returns false
isFinite(10/1); // returns true
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>
<h2>The isFinite() Method</h2>
<p>The isFinite() method returns false if the argument is Infinity or NaN.</p>
<p>Otherwise it returns true.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
isFinite(10 / 0) + "<br>" + isFinite(10 / 1);
</script>
</body>
</html>
O método global isNaN()
retorna true
se o argumento for NaN
. Caso contrário, retorna false
:
isNaN("Hello"); // returns true
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>
<h2>The isNaN() Method</h2>
<p>The isNan() method returns true if the argument is NaN. Otherwise it returns false.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
isNaN("Hello") + "<br>" + isNaN("10");
</script>
</body>
</html>
Crie um Array Iterator e, em seguida, itere sobre os pares chave/valor:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
const f = fruits.entries();
for (let x of f) {
document.getElementById("demo").innerHTML += x;
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The entries() method</h2>
<p>entries() returns an Array Iterator object with key/value pairs:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
const f = fruits.entries();
for (let x of f) {
document.getElementById("demo").innerHTML += x + "<br>";
}
</script>
<p>The entries() method is not supported in Internet Explorer 11 (or earlier).</p>
</body>
</html>
O método entries()
retorna um objeto Array Iterator com pares chave/valor:
[0, "Banana"]
[1, "Laranja"]
[2, "Maçã"]
[3, "Manga"]
O método entries()
não altera o array original.
Os módulos são importados de duas maneiras diferentes:
Importe exportações nomeadas do arquivo person.js:
import { name, age } from "./person.js";
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Modules</h1>
<p id="demo"></p>
<script type="module">
import { name, age } from "./person.js";
let text = "My name is " + name + ", I am " + age + ".";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Importe uma exportação padrão do arquivo message.js:
import message from "./message.js";
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Modules</h1>
<p id="demo"></p>
<script type="module">
import message from "./message.js";
document.getElementById("demo").innerHTML = message();
</script>
</body>
</html>
Saiba mais sobre Módulos em: Módulos JavaScript.