java script - funções

Download Java script - funções

Post on 21-Mar-2017

75 views

Category:

Technology

0 download

Embed Size (px)

TRANSCRIPT

  • JavaScript - Funes

    Cristiano Pires Martins Fonte: JavaScript - Guia do Programador

    Maujor

  • Definies

    Funo um poderoso objeto destinado a executar uma ao;

    um bloco de cdigo capaz de realizar aes;

    Funo um exemplo de reutilizao inteligente de cdigo;

    Tem a finalidade de dar maior legibilidade ao programa e facilitar a manuteno.

  • Criando Funes

    Declarao de funo:function minhaFuncao(){ // aqui bloco de cdigo};

    Expresso de funo:var minhaFuncao = function(){ // aqui bloco de cdigo};

    Com o uso do objeto construtor precedido da palavra-chave new:

    var minhaFuncao = new Function (/*aqui bloco de cdigo*/);

  • declaraes x expresses

    Declarao de Funes:var result = add(5,5);

    function add(num1, num2){return num1 + num2;

    }

    Expresso de Funes:var result = add(5,5); //ERRO!!!!var add = function(num1, num2){

    return num1 + num2;}

  • Parmetros

    possvel passar qualquer quantidade de parmetros para qualquer funo sem causar erros;

    Os parmetros so armazenados em uma estrutura semelhante a arrays chamada arguments;

    arguments pode receber qualquer quantidade de valores.

  • Exemplo 1 - parmetrosfunction reflect(value){

    return value;

    }

    console.log(reflect(Hi!)); //Hi!"

    console.log(reflect(Hi!,25)); //Hi!

    console.log(reflect.lenght); // 1

  • Exemplo 2 - parmetrosreflect = function(){

    return arguments[0];

    }

    console.log(reflect(Hi!)); //Hi!"

    console.log(reflect(Hi!,25)); //Hi!

    console.log(reflect.lenght); // 0

  • Exemplo 3 - parmetrosfunction soma(){

    var result = 0, i = 0; var len = arguments.length; while(i < len){result += arguments[i];i++;

    }return result;

    }console.log(soma(1,2)); //3console.log(soma(3,4,5,6)); //18console.log(soma(50)); //50console.log(soma()); //0

  • Sobrecarga de funesfunction soma(){

    var result = 0, i = 0; var len = arguments.length; while(i < len){result += arguments[i];i++;

    }return result;

    }console.log(soma(1,2)); //3console.log(soma(3,4,5,6)); //18console.log(soma(50)); //50console.log(soma()); //0

  • Sobrecarga de funes

    a possibilidade de uma funo ter diversas assinaturas;

    Assinatura composta do nome da funo e da quantidade e dos tipos de parmetros esperados pela funo;

    JavaScript no possui Sobrecarga de funes.

  • Resolvendo Sobrecarga em Funes

    function mensagem(msg){

    if(arguments.length === 0)

    msg = default;

    console.log(msg);

    }

    mensagem(Ol); //exibe Ol"

    mensagem(); //exibe default;

  • Declarao Function

    ...

    function ola(){alert(Bem-vindo ao meu site);

    };

    ...

    Executar funo

  • Declarao Function

    ...

    function calculaRetangulo(b,h){var area = (b*h);var perimetro = (b+h)*2;alert(rea: + area + \nPermetro: + perimetro);

    };

    ...

    Executar funo

    ...

  • Function( )

    ...

    var ola = new Function(alert(Bem-vindo!););

    ...

    Executar funo

    ...

  • Function( )

    ...

    var calculaAreaRetangulo = new Function(b,h,return b*h;);

    ...

    Executar funo

    ...

  • Sintaxe Literal

    ...

    var calculaAreaRetangulo = function(b,h){return b*h;

    };

    ...

    Executar funo

    ...

  • Retornando Objetos

    ...

    function calculaRetangulo(b,h){var area = (b*h);var perimetro = (b+h)*2;return alert(rea: + area + \nPermetro: + perimetro);

    };

    ...

    Executar funo

    ...

  • Retornando Objetos

    ...

    function calculaRetangulo(b,h){var area = (b*h);var perimetro = (b+h)*2;return {

    area: area,perimetro: perimetro

    };};

    ...

    Executar funo

    ...

  • Retornando Array

    ...

    function calculaRetangulo(b,h){var area = (b*h);var perimetro = (b+h)*2;return [area, perimetro];

    };

    ...

    Executar funo

    ...

  • Sintaxe(function f(){...})()

    ...

    function calculaArea(b,h){var area = (b*h);return area;

    };alert(calculaArea(3,7));alert(calculaArea);

    ...

    O segundo alert() mostraa funo em si.

  • Escopo da Funo

    O corpo de uma funo cria um escopo local para variveis nele declaradas com o uso da palavra-chave var.

    Os argumentos de uma funo tambm pertencem ao escopo local.

  • Escopo de uma Funo

    function testeEscopo( ){

    var soma = 2 + 6;alert(A soma : + soma); //A soma 8

    };testeEscopo( );try{

    alert(O dobro da soma : + 2*soma); //Resulta em soma undefined} catch(e){

    alert(e.message); //Mostra a mensagem de erro}

  • Escopo de uma Funo

    function testeEscopo( ){

    soma = 2 + 6;alert(A soma : + soma); //A soma 8

    };testeEscopo( );try{

    alert(O dobro da soma : + 2*soma); //Resulta em 16} catch(e){

    alert(e.message); //No h mensagem de erro}

  • Closures

    A ideia central de uma closure exatamente a de confinamento de uma funo dentro da outra.

  • Closures

    function funcaoExterna( ){alert(Funo externa);function funcaoInterna( ){

    alert(Funo interna);};

    };

    Executar funo externaExecutar funo interna

    A funo externa executa normalmente, mas a interna no

    executada, pois foi chamada fora da funo externa

  • Closures

    function funcaoExterna( ){

    alert(Funo externa);function funcaoInterna( ){

    alert(Funo interna);};funcaoInterna();

    };

    Executar funo externa

    Como a funo interna foi chamada dentro da funo externa, executada

    normalmente

  • Closures

    function funcaoExterna( ){alert(Funo externa);function funcaoInterna( ){

    alert(Funo interna);};variavelGlobal = funcaoInterna;

    };

    Executar funo externaExecutar funo interna

    As duas funes so executadas normalmente

  • Funes Globais

    Funes que no esto associadas a um objeto particular da linguagem.

    eval(cdigo): executar um script inserido no argumento cdigo (cuidado ao usar, pois proporciona meios de servir cdigo malicioso);

    isFinite(valor): testa um valor passado como argumento da funo. True se for nmero ou false caso contrrio;

    isNaN(valor): testa um valor passado como argumento da funo. True se no for um nmero e falso caso contrrio.

  • Funes Globais

    Number(valor): converte em um nmero o valor passado como argumento da funo.

    parseFloat(string [,base]): converte em um nmero o valor passado como argumento da funo. Admite um argumento opcional que a base na qual o nmero dever ser retornado.

  • Exerccios

    1. Crie uma funo que retorna um Array com os meses do ano. Mostre o array retornado usando for;

    2. Faa uma funo que retorne um objeto com o cardpio relacionado aos dias da semana. Para cada dia da semana existe um prato diferente. Quando a funo for chamada, retornar um objeto que ser mostrado usando o FOR IN.