<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaScript: Singuska &#187; Básico</title>
	<atom:link href="http://javascript.singuska.com/category/basico/feed/" rel="self" type="application/rss+xml" />
	<link>http://javascript.singuska.com</link>
	<description>Fragmentos de código e gambiarras (0.2)</description>
	<lastBuildDate>Mon, 03 Oct 2011 19:45:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Objetos: o básico</title>
		<link>http://javascript.singuska.com/2010/02/24/objetos-o-basico/</link>
		<comments>http://javascript.singuska.com/2010/02/24/objetos-o-basico/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 01:43:52 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Básico]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=420</guid>
		<description><![CDATA[&#8220;No JavaScript, matrizes são objetos, funções são objetos, expressões regulares são objetos, e, claro, objetos são objetos&#8221; &#8211; O Melhor do JavaScript, pág. 17 &#8211; Douglas Crockford Da mesma maneira que matrizes (ou vetores, ou, em inglês, arrays) objetos são listas. Nos vetores os elementos das listas são índices numéricos sequenciais. Nos objetos cada item [...]]]></description>
			<content:encoded><![CDATA[<p><cite>&#8220;No JavaScript, matrizes são objetos, funções são objetos, expressões regulares são objetos, e, claro, objetos são objetos&#8221;</cite> &#8211; O Melhor do JavaScript, pág. 17 &#8211; Douglas Crockford</p>
<p>Da mesma maneira que <a href="http://javascript.singuska.com/2010/01/31/vetores-arrays-o-basico/">matrizes</a> (ou vetores, ou, em inglês, arrays) objetos são listas. Nos vetores os elementos das listas são índices numéricos sequenciais. Nos objetos cada item tem um par nome/valor:</p>
<p><span class="jsrun-exemplo-1 jsrun-button"> </span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span>
    monitor<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'LG'</span><span style="color: #ffffff;">,</span>
    mouse<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">,</span>
    teclado<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Microsoft'</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Meu mouse é: '</span> <span style="color: #ffffff;">+</span> computador.<span style="color: #6591f7;">mouse</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>No exemplo acima um objeto foi armazenado em uma variável chamada &#8220;computador&#8221;. Este objeto possui três items. Para acessar um valor utilizamos um ponto e o nome do elemento a ser acessado logo após o nome da variável do objeto: computador.monitor, computador.mouse, computador.teclado.</p>
<p>É possível inicializar um objeto vazio e adicionar valores posteriormente:</p>
<p><span class="jsrun-exemplo-2 jsrun-button"> </span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span><span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
computador.<span style="color: #6591f7;">monitor</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'LG'</span><span style="color: #ffffff;">;</span>
computador.<span style="color: #6591f7;">mouse</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Microsoft'</span><span style="color: #ffffff;">;</span>
computador.<span style="color: #6591f7;">mouse</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">;</span>
computador.<span style="color: #6591f7;">teclado</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Microsoft'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Meu mouse é: '</span> <span style="color: #ffffff;">+</span> computador.<span style="color: #6591f7;">mouse</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>É também possível inicializar um objeto utilizando-se a seguinte sintaxe:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">new</span> Object<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>Esta forma não é considerada uma boa prática. Prefira sempre { }.</p>
<h3>Recuperando e inserindo valores</h3>
<p>Há duas formas de recuperar ou inserir valores. Com ponto (notação já descrita acima) e com [ ]:</p>
<p><span class="jsrun-exemplo-3 jsrun-button"> </span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #61ce3c;">'mouse-sem-fio'</span><span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Microsoft'</span><span style="color: #ffffff;">,</span>
    <span style="color: #61ce3c;">'caixa-de-som'</span><span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Creative Labs'</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
computador<span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'mouse-sem-fio'</span><span style="color: #ffffff;">&#93;</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Mouse: '</span> <span style="color: #ffffff;">+</span> computador<span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'mouse-sem-fio'</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>A notação [ ] permite recuperar valores com nomes que não são constantes ou palavras reservadas. A sintaxe abaixo é inválida:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">computador.<span style="color: #6591f7;">mouse</span><span style="color: #ffffff;">-</span>sem<span style="color: #ffffff;">-</span>fio <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>Não é possível utilizar -, _, espaços ou outros caracteres que não sejam letras e números quando utilizamos a notação de ponto. Neste caso é preciso utilizar [ ]. Da mesma forma, ao criarmos um objeto, se o nome possuir qualquer caracter especial, aspas (simples ou duplas) deverão ser utilizadas:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span> mouse<span style="color: #ffffff;">-</span>sem<span style="color: #ffffff;">-</span>fio<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// Errado</span>
<span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span> <span style="color: #61ce3c;">'mouse-sem-fio'</span><span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// Correto</span></pre></div></div>

<p>Além disso, se o nome do valor a ser recuperado vier de uma outra variáve é necessário utilizar [ ]:</p>
<p><span class="jsrun-exemplo-4 jsrun-button"> </span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #61ce3c;">'nome'</span><span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Meu Computador'</span><span style="color: #ffffff;">,</span>
    monitor<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'LG'</span><span style="color: #ffffff;">,</span>
    mouse<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">,</span>
    teclado<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Microsoft'</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">var</span> nome <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'mouse'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Meu mouse é: '</span> <span style="color: #ffffff;">+</span> computador<span style="color: #ffffff;">&#91;</span>nome<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Meu computador chama: '</span> <span style="color: #ffffff;">+</span> computador.<span style="color: #6591f7;">nome</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></div></div>

<p>É muito importante entender o exemplo acima, que ilustra bem a diferença entre a notação de ponto e [ ].</p>
<h3>Percorrendo um objeto</h3>
<p>É possível varrer todos os valores de um objeto:</p>
<p><span class="jsrun-exemplo-5 jsrun-button"> </span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span>
    monitor<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'LG'</span><span style="color: #ffffff;">,</span>
    mouse<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">,</span>
    teclado<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Microsoft'</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">for</span> <span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">var</span> nome <span style="color: #fbde2d; font-weight: bold;">in</span> computador<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Nome: '</span> <span style="color: #ffffff;">+</span> nome <span style="color: #ffffff;">+</span> <span style="color: #61ce3c;">' / Valor: '</span> <span style="color: #ffffff;">+</span> computador<span style="color: #ffffff;">&#91;</span>nome<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></div></div>

<p>É importante salientar que este tipo de loop for / in não garante que a ordem dos elementos seja sempre a mesma. Dependendo da execução do script a ordem pode variar. Há meios de se utilizar o loop for tradicional para percorrer objetos mas isso fica para uma outra ocasião.</p>
<h3>Objetos dentro de objetos: estruturas mais complexas</h3>
<p><span class="jsrun-exemplo-6 jsrun-button"> </span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> computador <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#123;</span>
    usuarios<span style="color: #ffffff;">:</span> <span style="color: #ffffff;">&#91;</span> 
        <span style="color: #ffffff;">&#123;</span> login<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'sigmus'</span><span style="color: #ffffff;">,</span> rank<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'admin'</span> <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span> 
        <span style="color: #ffffff;">&#123;</span> login<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'amigo'</span><span style="color: #ffffff;">,</span> rank<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'guest'</span> <span style="color: #ffffff;">&#125;</span>
    <span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">,</span>
    hardware<span style="color: #ffffff;">:</span> <span style="color: #ffffff;">&#123;</span>
        monitor<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'LG'</span><span style="color: #ffffff;">,</span>
        mouse<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Logitech'</span><span style="color: #ffffff;">,</span>
        teclado<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Microsoft'</span><span style="color: #ffffff;">,</span>
        hd<span style="color: #ffffff;">:</span> <span style="color: #ffffff;">&#123;</span>
            marca<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Seagate'</span><span style="color: #ffffff;">,</span>
            tamanho<span style="color: #ffffff;">:</span> <span style="color: #f78465;">256</span>
        <span style="color: #ffffff;">&#125;</span>
    <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
    software<span style="color: #ffffff;">:</span> <span style="color: #ffffff;">&#123;</span>
        sistemaOperacional<span style="color: #ffffff;">:</span> <span style="color: #ffffff;">&#123;</span>
            nome<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Windows'</span><span style="color: #ffffff;">,</span>
            versao<span style="color: #ffffff;">:</span> <span style="color: #f78465;">7</span>
        <span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">,</span>
        editorPHP<span style="color: #ffffff;">:</span> <span style="color: #61ce3c;">'Aptana'</span>
    <span style="color: #ffffff;">&#125;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// Fim do objeto</span>
&nbsp;
<span style="color: #bfbfbf; font-style: italic;">// Início das funções</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">var</span> hdPrecisaDeUpgrade <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>micro<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">var</span> tamanhoHd <span style="color: #ffffff;">=</span> micro.<span style="color: #6591f7;">hardware</span>.<span style="color: #6591f7;">hd</span>.<span style="color: #6591f7;">tamanho</span><span style="color: #ffffff;">;</span>
    <span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>tamanhoHd <span style="color: #ffffff;">&lt;</span> <span style="color: #f78465;">512</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
        <span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #fbde2d; font-weight: bold;">true</span><span style="color: #ffffff;">;</span>
    <span style="color: #ffffff;">&#125;</span>
    <span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #fbde2d; font-weight: bold;">false</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">var</span> usuarioEhAdmin <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span>login<span style="color: #ffffff;">,</span> usuarios<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">for</span> <span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">var</span> i <span style="color: #ffffff;">=</span> <span style="color: #f78465;">0</span><span style="color: #ffffff;">;</span> i <span style="color: #ffffff;">&lt;</span> usuarios.<span style="color: #6591f7;">length</span><span style="color: #ffffff;">;</span> i<span style="color: #ffffff;">++</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
        <span style="color: #fbde2d; font-weight: bold;">var</span>
        login <span style="color: #ffffff;">=</span> usuarios<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span>.<span style="color: #6591f7;">login</span><span style="color: #ffffff;">,</span>
        rank <span style="color: #ffffff;">=</span> usuarios<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span>.<span style="color: #6591f7;">rank</span><span style="color: #ffffff;">;</span>
&nbsp;
        <span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>rank <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'admin'</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
            <span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #fbde2d; font-weight: bold;">true</span><span style="color: #ffffff;">;</span>
        <span style="color: #ffffff;">&#125;</span>
    <span style="color: #ffffff;">&#125;</span>
    <span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #fbde2d; font-weight: bold;">false</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #bfbfbf; font-style: italic;">// Testando alguns dados</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>hdPrecisaDeUpgrade<span style="color: #ffffff;">&#40;</span>computador<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Você precisa de um HD maior!'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>usuarioEhAdmin<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'sigmus'</span><span style="color: #ffffff;">,</span> computador.<span style="color: #6591f7;">usuarios</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'O usuário é admin!'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>Este exemplo mostra como é possível compor estruturas de dados mais complexas com objetos. É possível inclusive embutir funções dentro de objetos, mas isso é assunto para outro post. Por enquanto é isso. O entendimento de objetos é crucial para um real entendimento do JavaScript. E é também uma das suas facetas mais fascinantes. Caso você tenha alguma dúvida ou sugestão, por favor, comente!</p>
]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2010/02/24/objetos-o-basico/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vetores (arrays): o básico</title>
		<link>http://javascript.singuska.com/2010/01/31/vetores-arrays-o-basico/</link>
		<comments>http://javascript.singuska.com/2010/01/31/vetores-arrays-o-basico/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 19:36:21 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Básico]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=117</guid>
		<description><![CDATA[Vetores (ou arrays em inglês) são listas de informações. Pode ser uma lista de números, de strings, de outros vetores, de objetos ou de funções. Vetores servem para agrupar dados similares Imagine que tenhamos que guardar o nome de três carros que vieram de um formulário. É necessário exibir um alerta se um dos carros [...]]]></description>
			<content:encoded><![CDATA[<p>Vetores (ou arrays em inglês) são listas de informações. Pode ser uma lista de números, de strings, de outros vetores, de objetos ou de funções. Vetores servem para agrupar dados similares</p>
<p>Imagine que tenhamos que guardar o nome de três carros que vieram de um formulário. É necessário exibir um alerta se um dos carros possuir o nome Civic.</p>
<p><span class="jsrun-exemplo-1 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span>
c1 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Fiesta'</span><span style="color: #ffffff;">,</span>
c2 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Palio'</span><span style="color: #ffffff;">,</span>
c3 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>c1 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span> <span style="color: #ffffff;">||</span> c2 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span> <span style="color: #ffffff;">||</span> c3 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Parabéns, você tem um Civic!'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>Após um tempo em produção, formulário precisa agora ter 4 campos para de entrada. Atualizado, o novo código seria o seguinte:</p>
<p><span class="jsrun-exemplo-2 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span>
c1 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Fiesta'</span><span style="color: #ffffff;">,</span>
c2 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Palio'</span><span style="color: #ffffff;">,</span>
c3 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">,</span>
c4 <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Fox'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">if</span> <span style="color: #ffffff;">&#40;</span>c1 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span> <span style="color: #ffffff;">||</span> c2 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span> <span style="color: #ffffff;">||</span> c3 <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span> <span style="color: #ffffff;">||</span> c4 <span style="color: #ffffff;">==</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Parabéns, você tem um Civic!'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>De cara dá para perceber que este código não é nem um pouco prático de ser atualizado. Uitilizando vetores, é possível agrupar os carros em uma única variável. Além disso, as informações armazenadas em um vetor são facilmente acessadas:</p>
<p><span class="jsrun-exemplo-3 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> carros <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'Fiesta'</span><span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'Palio'</span><span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'Fox'</span><span style="color: #ffffff;">&#93;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">for</span> <span style="color: #ffffff;">&#40;</span>indice <span style="color: #fbde2d; font-weight: bold;">in</span> carros<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">if</span><span style="color: #ffffff;">&#40;</span>carros<span style="color: #ffffff;">&#91;</span>indice<span style="color: #ffffff;">&#93;</span> <span style="color: #ffffff;">===</span> <span style="color: #61ce3c;">'Civic'</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
        <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Parabéns, você tem um Civic!'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
    <span style="color: #ffffff;">&#125;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<h3>Acessando os elementos de um vetor</h3>
<p>Além de strings, os vetores podem conter números:</p>
<p><span class="jsrun-exemplo-4 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">5</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">25</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">40</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Para acessarmos os valores do vetor <strong>lista</strong> precisamos utilizar um índice. <em>O primeiro índice de um vetor é sempre 0</em>. Por isso o resultado deste código é <em>25</em>. O índice <em>1</em> acessa na verdade a segunda posição do vetor.</p>
<p>Podemos também misturar tipos diferentes de dados em um mesmo vetor:</p>
<p><span class="jsrun-exemplo-5 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'bananas'</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">10</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">0</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Para inicializarmos uma lista como vazia e depois adicionar um elemento:</p>
<p><span class="jsrun-exemplo-6 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
lista.<span style="color: #6591f7;">push</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'abacaxi'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
lista.<span style="color: #6591f7;">push</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'goiaba'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>É também possível adicionar valores fora de sequência:</p>
<p><span class="jsrun-exemplo-7 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">5</span><span style="color: #ffffff;">&#93;</span> <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'melancia'</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">5</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">0</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>A tentativa de acesso ao índice 0 retorna <em>undefined</em> neste caso, pois o único índice existente é 5. Vetores podem também ser declarados utilizando-se a palavra reservada <em>Array</em>:</p>
<p><span class="jsrun-exemplo-8 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #fbde2d; font-weight: bold;">new</span> Array<span style="color: #ffffff;">&#40;</span><span style="color: #f78465;">30</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">60</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">90</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">2</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>A utilização de <em>[ ]</em> é considerada uma boa prática.</p>
<h3>Vetores com variáveis e com outros vetores dentro</h3>
<p>Valores de vetores podem ser outros vetores:</p>
<p><span class="jsrun-exemplo-9 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> meuCarro <span style="color: #ffffff;">=</span> <span style="color: #61ce3c;">'Fiesta'</span><span style="color: #ffffff;">;</span>
<span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'Sandero'</span><span style="color: #ffffff;">,</span> meuCarro<span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'Fox'</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Um vetor dentro de outro:</p>
<p><span class="jsrun-exemplo-10 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-7</span>
<span style="color: #fbde2d; font-weight: bold;">var</span> numeros <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">40</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">45</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">50</span><span style="color: #ffffff;">&#93;</span>
<span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">10</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">30</span><span style="color: #ffffff;">,</span> numeros<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">2</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>O nível de profundidade dos vetores em JavaScript não é definido e é dado apenas pelo limite da memória (e também pelo seu bom senso).</p>
<h3>Quantidade de elementos de um vetor</h3>
<p><span class="jsrun-exemplo-11 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">12</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">24</span><span style="color: #ffffff;">,</span> <span style="color: #f78465;">48</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista.<span style="color: #6591f7;">length</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>A propriedade <em>length</em> nos retorna um número indicando quantos elementos um vetor tem. Isso é muito importante e útil, pois nos permite &#8220;passear&#8221; pelo vetor:</p>
<p><span class="jsrun-exemplo-12 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span><span style="color: #61ce3c;">'primeiro'</span><span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'segundo'</span><span style="color: #ffffff;">,</span> <span style="color: #61ce3c;">'terceiro'</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">for</span> <span style="color: #ffffff;">&#40;</span><span style="color: #fbde2d; font-weight: bold;">var</span> i <span style="color: #ffffff;">=</span> <span style="color: #f78465;">0</span><span style="color: #ffffff;">;</span> i <span style="color: #ffffff;">&lt;</span> lista.<span style="color: #6591f7;">length</span><span style="color: #ffffff;">;</span> i<span style="color: #ffffff;">++</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Índice: '</span> <span style="color: #ffffff;">+</span> i <span style="color: #ffffff;">+</span> <span style="color: #61ce3c;">' valor: '</span> <span style="color: #ffffff;">+</span> lista<span style="color: #ffffff;">&#91;</span>i<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>Para finalizar, uma brincadeira inútil:</p>
<p><span class="jsrun-exemplo-13 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> lista <span style="color: #ffffff;">=</span> <span style="color: #ffffff;">&#91;</span>
    <span style="color: #61ce3c;">'motocicleta'</span><span style="color: #ffffff;">,</span>
    <span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">30</span><span style="color: #ffffff;">,</span> <span style="color: #fbde2d; font-weight: bold;">function</span><span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
        <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Olá'</span><span style="color: #ffffff;">&#41;</span>
        <span style="color: #ffffff;">&#125;</span>
     <span style="color: #ffffff;">&#93;</span>
<span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">0</span><span style="color: #ffffff;">,</span><span style="color: #f78465;">0</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
&nbsp;
lista<span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#91;</span><span style="color: #f78465;">1</span><span style="color: #ffffff;">&#93;</span><span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2010/01/31/vetores-arrays-o-basico/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Funções: o básico</title>
		<link>http://javascript.singuska.com/2009/12/21/funcoes-o-basico/</link>
		<comments>http://javascript.singuska.com/2009/12/21/funcoes-o-basico/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 00:50:30 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Básico]]></category>
		<category><![CDATA[funções]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=41</guid>
		<description><![CDATA[Função é uma porção de código de um programa maior que desempenha uma tarefa específica e é relativamente independente do resto do código. Geralmente uma função tem um nome, recebe argumentos, realiza sua tarefa e finalmente retorna um resultado. 1 2 3 4 // exemplo-1 function a&#40;&#41; &#123; alert&#40;'Olá, sou a função.'&#41;; &#125; O fragmento [...]]]></description>
			<content:encoded><![CDATA[<p>Função é uma porção de código de um programa maior que desempenha uma tarefa específica e é relativamente independente do resto do código. Geralmente uma função tem um nome, recebe argumentos, realiza sua tarefa e finalmente retorna um resultado.</p>
<p><span class="jsrun-exemplo-1"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-1</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> a<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Olá, sou a função.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>O fragmento de código acima não realiza nenhuma tarefa. A função de nome <em>a</em> foi apenas <em>declarada</em> e está pronta para ser utilizada. Para que algo aconteca precisamos <em>invocar</em>, chamar a função. Isso por ser feito da seguinte maneira:</p>
<p><span class="jsrun-exemplo-1 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">a<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Se adicionarmos a linha acima ao nosso código, um alerta aparecerá no navegador exibindo a mensagem &#8220;Olá, sou uma função&#8221;.</p>
<h3>E para que servem as funções? (argumentos)</h3>
<p>Quando um programa de alguma complexidade maior é desenvolvido, problemas recorrentes tornam-se evidentes. Tarefas repetitivas que podem ser identificadas, isoladas e codificadas em funções. Vamos alterar nosso código para o seguinte:</p>
<p><span class="jsrun-exemplo-2"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-2</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> a<span style="color: #ffffff;">&#40;</span>texto<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>texto<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

<p>A função <em>a</em> agora recebe o que é chamado de argumento. Este argumento tem um nome: <em>texto</em>. Novamente, nosso código é inútil enquando não for acionado.</p>
<p><span class="jsrun-exemplo-2 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">a<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'Sou um exemplo de texto.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Mais uma vez um alerta pipoca na tela no navegador, desta vez com a mensagem &#8220;Sou um exemplo de texto&#8221;. Perceba como isso é importante. Nossa função agora comporta-se de maneira diferente dependendo do argumento que lhe é passado. Nessa altura nossa função não é nem um pouco útil. Ela nada mais é do que uma espécie de &#8220;atalho&#8221; para um outra função: alert. Ambas desempenham a mesma tarefa. Vamos então modificar a função para que ela realize algo um pouco diferente:</p>
<p><span class="jsrun-exemplo-3 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-3</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> a<span style="color: #ffffff;">&#40;</span>texto<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'O argumento passado foi: '</span> <span style="color: #ffffff;">+</span> texto<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
a<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'um exemplo de texto.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>O resultado do exemplo 3 é: <em>O argumento passado foi um exemplo de texto</em>. A função continua utilizando alert, mas agora ela realiza uma tarefa um pouco mais complexa.</p>
<p>É possível afirmar então que funções são pedaços de código que desempenham tarefas muito parecidas, mas de maneira um pouco diferente dependendo do jeito que as acionamos. O que faz a função se comportar de forma diferente é o <em>contexto</em>. O contexto, nos exemplos acima, é dado pelo argumento que é pasado no momento da invocação da função.</p>
<h3>Sobre os retornos de funções</h3>
<p>Como já foi dito, funções podem ter nomes, receber argumentos, desempenhar uma tarefa e retornar algum resultado.</p>
<p><span class="jsrun-exemplo-4 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-4</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> a<span style="color: #ffffff;">&#40;</span>texto<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">return</span> <span style="color: #61ce3c;">'O argumento passado foi: '</span> <span style="color: #ffffff;">+</span> texto<span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
<span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>a<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'um exemplo de texto.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Este exemplo se comporta de maneira igual ao anterior. Alert é chamada e recebe como argumento o retorno da função &#8220;a&#8221;. Como &#8220;a&#8221; está dentro de &#8220;alert&#8221; ela é executada primeiro. Desta forma, quando alert é chamada já temos o resultado de &#8220;a&#8221; disponível, que é passado como argumento para &#8220;alert&#8221;. </p>
<p>É possível pensar na sequência de operações da seguinte forma: &#8220;alert&#8221; é invocada, invoca &#8220;a&#8221;, que retorna um resultado, que é passado como argumento o argumento de &#8220;alert&#8221;.</p>
<p>É muito importante entender que o retorno não somente retorna um resultado. Ele também pára a execução da função.</p>
<p><span class="jsrun-exemplo-5 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #bfbfbf; font-style: italic;">// exemplo-5</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> a<span style="color: #ffffff;">&#40;</span>texto<span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">return</span><span style="color: #ffffff;">;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'O argumento passado foi: '</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
a<span style="color: #ffffff;">&#40;</span><span style="color: #61ce3c;">'um exemplo de texto.'</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>Neste caso <em>nada acontece no navegador</em>. Na linha 3 nossa função, invocada na linha 5, não retorna nenhum valor. Ou seja, ela para de ser executada. Esta função é inútil porque ele não desempenha nenhuma tarefa. Em nenhuma circunstância chegaremos na linha 4. É um exemplo besta mas serve para ilustrar que retornos podem ou não retornar um valor, mas sempre interrompem a execução da função.</p>
]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2009/12/21/funcoes-o-basico/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Escopo (variáveis globais / locais)</title>
		<link>http://javascript.singuska.com/2009/12/09/escopo-variaveis-globais-locais/</link>
		<comments>http://javascript.singuska.com/2009/12/09/escopo-variaveis-globais-locais/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 20:45:21 +0000</pubDate>
		<dc:creator>Flávio</dc:creator>
				<category><![CDATA[Básico]]></category>
		<category><![CDATA[escopo]]></category>

		<guid isPermaLink="false">http://javascript.singuska.com/?p=14</guid>
		<description><![CDATA[A palavra reservada var em JavaScript define a variável como sendo local ao bloco de escopo onde está sendo declarada: 1 2 3 4 5 6 7 8 9 10 11 12 var x = 1; &#160; function fn1&#40;&#41; &#123; var x = 2; alert&#40;x&#41;; &#125; function fn2&#40;&#41; &#123; alert&#40;x&#41;; &#125; &#160; fn1&#40;&#41;; fn2&#40;&#41;; O [...]]]></description>
			<content:encoded><![CDATA[<p>A palavra reservada <strong>var</strong> em JavaScript define a variável como sendo local ao bloco de escopo onde está sendo declarada:</p>
<p><span class="jsrun-exemplo-1 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">1</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">function</span> fn1<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: #fbde2d; font-weight: bold;">var</span> x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">2</span><span style="color: #ffffff;">;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>x<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> fn2<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>x<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
&nbsp;
fn1<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
fn2<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>O resultado é: <strong>2</strong> e depois <strong>1</strong>. Neste exemplo, uma outra variável x (que por acaso tem o mesmo nome) foi definida dentro da função fn1. Por isso, ao executarmos a função fn2 o valor original da variável declarada na linha 1 permanece.</p>
<p>Para que o resultado fosse <strong>2</strong> e <strong>2</strong>:</p>
<p><span class="jsrun-exemplo-2 jsrun-button"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #fbde2d; font-weight: bold;">var</span> x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">1</span><span style="color: #ffffff;">;</span>
&nbsp;
<span style="color: #fbde2d; font-weight: bold;">function</span> fn1<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">2</span><span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// atribuição de valor sem var</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>x<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
<span style="color: #fbde2d; font-weight: bold;">function</span> fn2<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span> <span style="color: #ffffff;">&#123;</span>
    <span style="color: red;">alert</span><span style="color: #ffffff;">&#40;</span>x<span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span>
&nbsp;
fn1<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span>
fn2<span style="color: #ffffff;">&#40;</span><span style="color: #ffffff;">&#41;</span><span style="color: #ffffff;">;</span></pre></td></tr></table></div>

<p>A modificação da linha 4 altera o valor da variável declarada na linha 1 e temos, consequentemente, o mesmo resultado nos dois alerts (trata-se da mesma variável com o mesmo nome).</p>
<p>Note que na linha 1 dos dois exemplos a variável foi declarada utilizando-se <strong>var</strong>. Entretanto, a remoção de var não implica em nenhuma mudança de comportamento. Isso acontece porque neste caso a declaração ocorre no escopo mais &#8220;exterior&#8221; do nosso código. Com ou sem <strong>var</strong> ela pode ser considerada global.</p>
<h3>E porque isso é importante?</h3>
<p>O uso de variáveis globais é uma péssima prática. A variável pode ser utilizada e modificada por qualquer parte do código. Isso é fonte de inúmeros bugs. A não ser que seja realmente necessário, sempre declare as variáveis como locais. É possível (e recomendável) declarar várias variáveis locais de uma vez:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">    <span style="color: #fbde2d; font-weight: bold;">var</span> x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">1</span><span style="color: #ffffff;">,</span> y<span style="color: #ffffff;">,</span> z<span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// boa prática</span>
&nbsp;
    <span style="color: #fbde2d; font-weight: bold;">var</span> x <span style="color: #ffffff;">=</span> <span style="color: #f78465;">1</span><span style="color: #ffffff;">;</span> <span style="color: #bfbfbf; font-style: italic;">// não tão boa</span>
    <span style="color: #fbde2d; font-weight: bold;">var</span> y<span style="color: #ffffff;">;</span>
    <span style="color: #fbde2d; font-weight: bold;">var</span> z<span style="color: #ffffff;">;</span>
<span style="color: #ffffff;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://javascript.singuska.com/2009/12/09/escopo-variaveis-globais-locais/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

