terça-feira, 13 de junho de 2017

Conversão de Tipos

Conversão Implícita de Tipos

Em expressões envolvendo valores numéricos e strings com o operador +, os valores numéricos serão convertidos implicitamente para strings. Por exemplo::

X = "A resposta é " + 35; // retorna "A resposta é 35"
Y = 35 + " é a resposta" // retorna "35 é a resposta"


Em expressões envolvendo outros operadores a conversão será feita de acordo com o tipo de dado esperado pelo operador. Exemplo:

X = "37" - 7 // retorna 30
Y = "37" + 7 // retorna 377


Quando dois valores são comparados, números, strings e valores lógicos são comparados por valor:

3 == "3" // Resultado true
1 && true // Resultado true


Usando a conversão implícita podemos usar de um artifício simples para forçar a conversão de número para string e de string para número.

Número para string:

i = 25 ;
s = "" + i ; // s recebe "25"


String para número:


s = "256" ;
j = s - 0 ; // j recebe 256


Conversão de Explícita de Tipos

parseInt (str) ou parseInt (str,base): Converte uma string num número inteiro. Str é a cadeia a ser convertida e base é a base em que os números estão codificados. Se a base não for especificada,
assume que a string é uma seqüência de algarismos na base decimal (0,1,2,3,4,5,6,7,8,9). Caso encontre algum caractere diferente dos esperados, encerra a conversão:

num = "3A";
x = parseInt(num);    // x recebe 3
y = parseInt(num,16);    // y recebe 58


parseFloat (str):
É a função equivalente a parseInt, para converter strings em números reais. Da mesma forma, se encontrar algum caractere não esperado, encerra a conversão.

z = parseFloat("3.15"); // z recebe 3.15

Tipos de Dados

 Relacionamos alguns tipos de dados de uso mais comum em Javascript.




Arrays

Arrays são um tipo de dados muito importantes em qualquer linguagem. Uma maneira de criar e declarar arrays em Javascript pode ser a seguinte:

var a = new Array();
a[0] = ’cao’;

a[1] = ’gato’;
a[2] = ’frango’;
a.length; // 3


Uma notação mais conveniente é usar um array de literais:

var a = [’cao’, ’gato’, ’frango’];
a.length; // 3


Se você acessar um índice de array que não existe, o valor undefined será retornado:

typeof a[90]; // undefined

Você pode iterar sobre os elementos de um array usando um laço do tipo for e o método a.length, que retorna o tamanho de um array:

var a=[0,1,2,3,4,5,6,7,8,9,0];
for (var i = 0; i < a.length; i++) {
console.log(a[i]);
}


Um outro modo de iterar sobre os elementos de um array foi adicionado recentemente à definição da linguagem:

a=[9,8,7,6,5,4,3,2,1];
a.forEach (function(temp, i, novo) {
console.log(a[i]);
console.log(temp);
console.log(novo);
});


Se você quiser adicionar um elemento ao array simplesmente use o seguinte método pré-definido para arrays na linguagem:

a.push(item);


Métodos Pré-Definidos para Array

  • a.toString() : Retorna uma cadeia com a toString() de cada elemento separadas por vírgula.
  • a.toLocaleString(): Retorna uma cadeia com a toLocaleString() de cada elemento separadas por vírgula.
  • a.concat(item1[, item2[, ...[, itemN]]]): Retorna um novo array com os novos itens adicionados ao antigo.
  • a.join(sep): Converte o array em uma cadeia – com os valores delimitados com o parâmetro sep
  • a.pop() : Remove e retorna o último ítem.
  • a.push(item1, ..., itemN): Adiciona uma ou mais itens ao final do array.
  • a.reverse(): Inverte o array.
  • a.shift(): Remove e retorna o primeiro item.
  • a.slice(start[, end]): Retorna um sub-array.
  • a.sort([cmpfn]): Ordena o array com o uso de uma uma função de comparação (opcional) passada como parâmetro.
  • a.splice(start, delcount[, item1[, ...[, itemN]]]): Permite que você modifique um array apagando uma seção dele e substituindo com outros itens.
  • a.unshift (item1[, item2[, ...[, itemN]]]): Adiciona itens ao início do array.

Operadores

A seguir apresentamos alguns dos operadores mais utilizados na linguagem Javascript. Em particular, notem a diferença entre == e ===, onde o segundo operador exige que as variáveis sendo comparadas sejam do mesmo tipo para que a igualdade seja verdadeira e no primeiro caso não.




Entrada e Saída


 A entrada e saída pode ser realizada basicamente de duas formas:

  • No navegador 
    • window.prompt: Abre uma janela para pedir uma string ao usuário
       nome = window.prompt("Digite o seu nome:", "");
    • window.alert: Abre uma janela para exibir um aviso ao usuário
             window.alert("Senha inválida.");

  • No node.js ou na console
    • console.log: Imprime um valor na console
            console.log('Alô!');

sábado, 10 de junho de 2017

Variáveis e Comentários

O nomes em JavaScript  são sensíveis ao caixa alto ou baixo: myVariable é diferente de myvariable.

    var myVariable;
    myVariable = 'Bob';
    var myVariable = 'Bob';
    myVariable = 'Steve';




Comentários:

/*
Tudo o que estiver aqui é comentário
*/

// Isto também é um comentário
// que pode ser feito desta maneira
// se você quiser

Package.json

O aqruivo package.json

O arquivo package.json está presente  no diretório raiz de qualquer aplicação/módulo Node e é utilizado para definir as propriedades de um pacote. Veja ume xemplo a seguir:

{
  "name": "teste",
  "version": "1.0.0",
  "description": "",
  "main": "webteste.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.15.3",
    "johnny-five": "^0.11.1"
  }
}

Atributos do Package.json

  • name − nome do pacote
  • version − versão do pacote
  • description − descrição do pacote
  • homepage − homepage do pacote (URL)
  • author − autor do pacote
  • contributors − nome dos colabores do pacote
  • dependencies − lista de dependências. O NPM automaticamente instala as dependências mencionadas aqui no diretório node_module do pacote.
  • repository − tipo do repositório e URL do pacote
  • main − pponto de entrada do pacote
  • keywords −palavras-chave.

domingo, 4 de junho de 2017

Gerenciando a cache npm


Para atualizar um pacote node.js que já está instalado, o seguinte comando pode ser utilizado:

$ npm update johnny-five
Quando o  npm instala um pacote ele guarda uma cópia deste pacote, de modo que na próxima vez que você precisar deste pacote, não seja necessário ir à internet novamente.

O diretório onde esta cópia é guardada é  ~/.npm no Posix, ou \%AppData\%/npm-cache no Windows.

Eventualmente este diretório pode ficar cheio com pacotes velhos, então é necessário que ele seja limpo de vez em quando com o comando:

$ npm cache clean

Para utilizar um módulo no seu arquivo js, inclua a linha como a seguir:

var express  = require ('prompt');

As regras de onde “require” encontra os arquivos podem ser um pouco complexas, mas uma regra simples é que se o arquivo não começa com "./" ou "/", então ele é considerado um módulo global (e o caminho de instalação do “Node” local é verificado), ou é uma dependência local na pasta  “node\_modules” do projeto local. 

Se o arquivo começa com "./" é considerado um arquivo relativo ao diretório do arquivo que chamou “require”. Se o arquivo começa com "/", ele é considerado um caminho absoluto.

OBSERVAÇÃO: você pode omitir a extensão ".js" e a função “require” irá automaticamente anexá-la se necessário.