Data Types — Tipos de dados JavaScript
Aprenda sobre os tipos de dados em JavaScript incluído os tipos primitivos e de referência.
English version: https://www.javascripttutorial.net/javascript-data-types/
Javascript tem 6 tipos de dados primitivos:
- null
- undefined
- boolean
- number
- string
- symbol — disponível somente após ES6
e um tipo de dado complexo chamado de objeto.
Descobrir o tipo da variável
Para obter o tipo de uma variável já declarada (iniciada) use typeof
:
typeof [variável] = mostra o tipo da variável
JavaScript é uma linguagem dinâmica ou pouco “tipada”, portanto uma variável não se associa a nenhum tipo, mas seu valor sim. Em outras palavras, a mesma variável pode guardar valores de tipos diferentes a qualquer momento.
Para obter o atual tipo do valor de uma variável, use o operador typeof
.
undefined
O tipo undefined
é um tipo primitivo que tem um valor especial undefined
. Por padrão, quando uma variável é declarada, mas não inicializada, é atribuído a ela o valor undefined
.
Considere o seguinte exemplo:
Nesse exemplo, foo
é uma variável. Como foo
não foi inicializada, é atribuo a ela o valor undefined
. O tipo de foo
é undefined
.
É importante observar que o operador typeof
também retorna undefined
quando você o chama em uma variável que não foi declarada:
null
O tipo null
é o segundo tipo de dado primitivo que tem somente um valor: null
. O JavaScript define que null
é um ponteiro de objeto vazio.
Veja o exemplo:
é uma boa prática atribuir null
a uma variável irá guardar um objeto no futuro, para que você possa verificar se o objeto é null
ou não, usando a instrução if
da seguinte maneira:
O JavaScript define que null
é igual a undefined
conforme mostrado na declaração a seguir:
number
O JavaScript usa o formato IEEE-74 para representar números inteiros e de pontos flutuantes.
Números inteiros
A instrução a seguir declara uma variável que guarda um número inteiro:
Se você deseja representar os literais octal (base 8), coloque o primeiro dígito como zero (0) seguido pelos números do dígito octal (0 a 7) da seguinte maneira:
Se o literal de um número octal estiver fora do intervalo, o JavaScript o trará como um decimal, conforme mostrado no exemplo a seguir:
Para evitar a confusão, o ES6 permite que você especifique um literal octal usando o prefixo 0o
seguido por uma sequência de dígitos octais de 0 a 7:
Para criar um literal hexadecimal (base 16), você deve usar 0x
(em minúsculas) como os dois primeiros caracteres seguidos por qualquer número de dígitos hexadecimais (0 a 9 e A até F).
Ponto Flutuante (números decimais)
Para representar um número ponto flutuante, inclua um ponto decimal ( . ) seguido de pelo menos um número. Veja o exemplo a seguir:
JavaScript converte um número ponto flutuante em um número inteiro se o número parecer ser com um número inteiro (quando depois do ponto tiver apenas zeros). A razão é que o JavaScript sempre quer usar menos memória, pois o valor de um ponto flutuante usa duas vezes mais memória que um número inteiro.
O JavaScript permite que você usar a notação eletrônica (e-notation) para representar números muito grandes ou pequenos, como no exemplo a seguir:
O JavaSctipt fornece valores mínimos e máximos de um número que você pode acessar usando Number.MIN_VALUE
e Number.MAX_VALUE
. Além disso, o JavaScript usa Infinty
e -Infinity
para representar um número finito, positivo ou negativo.
Veja o exemplo:
NaN
O JavaScript tem um valor numérico especial chamado de NaN
, uma abreviação de Not a Number, que significa que o número é inválido.
Por exemplo, a divisão de uma string por um número, vai retornar NaN
como no exemplo a seguir:
O NaN
tem duas características especiais:
- Qualquer operação com
NaN
vai retornarNaN
. - O
NaN
não é igual a nenhum valor, incluindo ele mesmo.
Aqui estão alguns exemplos:
string
No JavaScript, uma string é uma sequencia de zero ou mais caracteres. Uma string literal começa e termina com aspas simples '
ou com aspas duplas "
. Uma string que começar com aspas duplas precisa terminar com aspas duplas e uma string que começar com aspas simples, precisa terminar com aspas simples.
Exemplos:
As strings no JavaScript são imutáveis (para o motor JavaScript). Isso significa que você não pode modificar uma string depois que foi criada. No entanto, pode criar uma nova string com base em uma operação na string original, assim:
Nesse exemplo o código diz o seguinte:
- Primeiro, declare a variável
foo
e inicialize uma string com o valorJavaScript
. - Depois, usando o operador
+
combine'JavaScript'
com' String'
para criar o valor'JavaScript String'
.
Por traz dos panos, o motor do JavaScript criou uma nova string que guardar 'JavaScript String'
e destruiu as outras duas strings 'JavaScript'
e ' String'
.
boolean
O tipo boolean
possui dois valores true
ou false
(em minúsculas). O exemplo a seguir declara duas variáveis que guardam valores boleanos.
O JavaScript permite que valores de outros tipos sejam convertidos em valores boleanos de true
ou false
.
Para converter um valor de um outro tipo de dados em um valor boleano, use a função Boolean
.
A tabela a seguir mostra as regras de conversão:
Tipo | true | false
----------+------------------------------+-----------------
string | string não vazia | string vazia
----------+------------------------------+-----------------
number | diferente de zero e infinito | 0, NaN
----------+------------------------------+-----------------
object | objeto não nulo | null
----------+------------------------------+-----------------
undefined | | undefined
----------+------------------------------+-----------------
Veja a seguinte demonstração:
symbol
O IE6 adicionou um tipo primitivo no JavaScript: o symbol
.
Diferente de outros tipos primitivos, o tiposymbol
não tem uma forma literal.
Para criar um símbolo, chame a função Symbol
como a seguir:
Observe que Symbol
é uma função, não um construtor de objetos, portanto, não use o operador new
. Se você usar terá um TypeError
.
A função Symbol
cria um valor único toda vez que você chamar ela.
Você pode passar uma string descritiva para a função Symbol
com o propósito de registro e depuração:
Quando você chamar o método toString
na variável de símbolo, ele vai retornar um nome mais descritivo, como por exemplo:
Você pode usar símbolos para diversos propósitos. Um deles é criar uma constante em forma de string que não vai colidir com qualquer outro valor.
A string 'click'
pode ser usada para diferentes propósitos e não exclusiva. No entanto, o símbolo click
é absolutamente exclusivo.
object
No JavaScript, um objeto é uma coleção de propriedades, onde cada propriedade é definida com um bar de chave e valor.
O exemplo a seguir define um objeto vazio usando dando a forma literal de objeto:
O próximo exemplo define um objeto person
com duas propriedades:
Um nome de propriedade de um objeto pode ser qualquer string. Você pode usar aspas ao redor do nome da propriedade se não for um identificador válido.
Por exemplo, se você tiver uma propriedade first-name
, você deveusar aspas como por exemplo "first-name"
mas firstName
é um identificador válido então as aspas são opcionais.
Se você tiver mais que uma propriedade, use vírgula (, ) para separar os pares.
O JavaScript permite você aninhar objetos, como no exemplo abaixo:
O objeto contato
possui as propriedades firstName
, lasttName
, email
, phone
e address
. A propriedade address
também é um objeto que possui as propriedades building
, street
, city
, state
e country
.
Você pode acessar as propriedades de um objeto usando duas notações:
- Notação por ponto
.
- Notação estio array
[]
No exemplo a seguir usando a notação de ponto .
para acessar as propriedades firstName
e lastName
do objeto contato
:
Para obter a propriedade de um objeto aninhado, use a seguinte forma:
Se você referenciar uma propriedade que não existe, você vai obter um valor undefined
:
O exemplo a seguir usa a notação estilo array para acessar as propriedades email
e phone
do objeto contact
:
Além da forma literal de criação de objeto, você pode usar a palavra chave new
para criar um novo objeto, da seguinte maneira:
E atribuir um valor para uma propriedade do objeto:
No JavaScript, todos os objetos são derivados do tipo Objetc
. Vamos falar mais do tipo Object
em um outro tutorial.
Neste tutorial, você aprendeu mais sobre os tipos de dados primitivos do JavaScript: undefined, null, number, string, boolean, symbol e objetc.
Veja o índice de todos os tutoriais JavaScript
Confira uma série de outros tutoriais JavaScript que eu escrevi, clicando no link abaixo: