Variáveis Globais e Locais
-
0:01 - 0:03Agora que você domina
o básico de funções, -
0:03 - 0:08gostaria de falar sobre um tópico que
pode se tornar um pouco complicado. -
0:08 - 0:11A diferença entre variáveis
locais e globais. -
0:11 - 0:14Estes termos podem não significar
nada para você agora. -
0:14 - 0:17Então, vamos começar
com um exemplo. -
0:17 - 0:20Criei este programa para mostrar quantas
polegadas cresci na minha infância. -
0:20 - 0:22Visto que humanos crescem
a taxas diferentes, -
0:22 - 0:25desenvolvi esta função
calcInches (calcPolegadas). -
0:25 - 0:26cujos argumentos são:
-
0:26 - 0:28startAge (idadeInicial),
endAge (idadeFinal) -
0:28 - 0:30e inchesPerYear (polegadasPorAno).
-
0:30 - 0:35Ela calculará o crescimento total,
em polegadas, durante aquele período -
0:35 - 0:37e então retornará o resultado
para quem quer que a chamou. -
0:37 - 0:40Podemos ver aqui que de
zero a oito anos -
0:40 - 0:45eu chamo calcInches e passo zero,
oito e 2,5 como parâmetros. -
0:45 - 0:48porque eu cresci aproximadamente
2,5 polegadas por ano. -
0:48 - 0:52Então ela faz o cálculo e retorna 20.
-
0:52 - 0:58De oito para dezesseis, eu passei
oito, dezesseis e dois. -
0:58 - 1:02porque eu não cresci tanto e pode-se
ver que ela retorna dezesseis. -
1:02 - 1:05Isso é agradável, mas
agora quero, na verdade, -
1:05 - 1:07mostrar quantas polegadas
eu cresci no total, -
1:07 - 1:09durante toda minha infância.
-
1:09 - 1:12Então, como faço isso?
-
1:12 - 1:15Bem, eu poderia começar a olhar
meu código e pensar... -
1:15 - 1:17quais valores eu tenho aqui?
-
1:17 - 1:21Será que tenho alguma coisa que
represente o total de polegadas? -
1:21 - 1:24Veja, eu tenho esta variável
totalInches (totalPolegadas) -
1:24 - 1:26dentro da minha função
calcInches (calcPolegadas). -
1:26 - 1:29Nesse caso, eu poderia
simplesmente mostrá-la, -
1:29 - 1:31e ver seu valor, começar por aí.
-
1:31 - 1:32Então, escrevemos:
-
1:32 - 1:35text(totalInches, 10, 200)
-
1:35 - 1:36e colocamos isso na parte inferior.
-
1:36 - 1:38Ok, vamos ver o que temos.
-
1:39 - 1:41Apareceu o cara do 'Oh noes!'.
-
1:41 - 1:45E ele diz que há um problema:
"totalInches não está definida." -
1:45 - 1:50Isso, é estranho porque definimos
totalInches bem aqui, certo? -
1:50 - 1:52var totalInches igual...
-
1:52 - 1:58Bem, o problema é que declaramos
totalInches dentro de uma função, -
1:58 - 2:00nesta linha aqui.
-
2:00 - 2:02E quando declaramos uma variável
dentro de uma função, -
2:02 - 2:05a variável é considerada local.
-
2:05 - 2:09Ela vive apenas dentro desta função aqui
-
2:09 - 2:12e o código fora da função, isso tudo,
-
2:12 - 2:16não enxerga variáveis locais
dentro de funções. -
2:16 - 2:18Apenas vê o que quer
que retorne da função. -
2:18 - 2:22Apenas vê o valor, mas não a variável.
-
2:22 - 2:25Então quando tentamos usar
totalInches fora da função, -
2:25 - 2:26o código não sabe o que é.
-
2:26 - 2:30Ele apenas diz: "Ei, eu nunca vi esta
variável antes. Ela não está definida. -
2:30 - 2:32Não posso mostrá-la."
-
2:32 - 2:34Mas, existe uma maneira que
-
2:34 - 2:38podemos fazer isso, tal que o código
de fora possa ver esta variável, ou seja, -
2:38 - 2:43se tornarmos esta variável local
em uma variável global. -
2:43 - 2:48Podemos fazer isso, movendo a definição
dela para fora da função, -
2:48 - 2:51para o que chamamos de escopo global.
-
2:51 - 2:54Agora, dentro da função, tudo que
estamos fazendo é -
2:54 - 2:58mudando o valor dela cada vez e
não definindo-a e declarando-a. -
2:58 - 3:03Veja que é mostrado "Crescimento
total durante a vida: 16". -
3:03 - 3:07Então, ele encontrou a variável, porque
a definimos em um escopo global. -
3:07 - 3:10Mas este não é exatamente o
valor que estamos procurando. -
3:10 - 3:11Este é apenas o valor mais recente.
-
3:11 - 3:14Isso é porque toda vez que
chamamos esta função, -
3:14 - 3:18ela atribui a totalInches o que quer
que esteja calculando daquela vez, certo? -
3:19 - 3:22O que realmente queremos
é uma nova variável, -
3:22 - 3:25que usaremos apenas para
armazenar o total geral, -
3:25 - 3:29a qual aumentaremos sempre que
calcularmos o total para um período. -
3:29 - 3:34Nesse caso, vamos alterar isso de volta
para ser uma variável local -
3:34 - 3:38e vamos criar uma nova variável global
chamada lifeInches (vidaPolegadas). -
3:38 - 3:41Vamos iniciá-la com zero.
-
3:41 - 3:43Depois, dentro da função,
-
3:43 - 3:46incrementaremos esta
variável global, escrevendo: -
3:46 - 3:49lifeInches += totalInches.
-
3:49 - 3:50Então, adicionaremos a ela ...
-
3:50 - 3:54qualquer tanto que for calculado cada vez
que chamarmos esta função. -
3:54 - 3:56Iremos adicioná-lo à variável
global lifeInches. -
3:56 - 3:59Depois, após a última linha,
mostraremos lifeInches: -
3:59 - 4:00text(lifeInches, 10, 200)
-
4:01 - 4:04Nosso crescimento total durante a vida.
-
4:04 - 4:06Não é minha altura de verdade.
Sou maior que isso. -
4:06 - 4:11Mas é porque começamos nascidos
com comprimento maior que zero. -
4:11 - 4:14Então, se quero o total eu poderia
talvez começar em 20. -
4:14 - 4:17E aí está! Essa é minha altura.
-
4:17 - 4:19Certo, então vamos revisar.
-
4:19 - 4:22totalInches é o que chamamos
de variável local. -
4:22 - 4:26Sabemos isso porque ela foi
declarada dentro desta função -
4:26 - 4:29e não fora de uma função.
-
4:29 - 4:35Isso significa que este código de fora
não conhece a variável totalInches. -
4:35 - 4:38Agora, lifeInches é o que chamamos
de variável global. -
4:38 - 4:41Sabemos disso porque vemos sua
declaração fora de qualquer função, -
4:41 - 4:44em um escopo global.
-
4:44 - 4:47Então, tente lembrar disso quando estiver
escrevendo funções e suas variáveis -
4:47 - 4:48e pense consigo mesmo
-
4:48 - 4:52se você quer uma variável local para
ser usada apenas por sua função -
4:52 - 4:55ou uma variável global, para
se programa inteiro utilizar. -
4:55 - 4:58Não se preocupe se isso
te faz quebrar a cabeça. -
4:58 - 5:00É um dos conceitos mais difíceis
em programação -
5:00 - 5:02e em Javascript, em particular.
-
5:02 - 5:04Você ficará bom nisso com a prática.
-
5:04 - 5:06Legendado por [Carlos A. N. C. R.]
Revisado por [Fernando dos Reis]
- Title:
- Variáveis Globais e Locais
- Description:
-
Esta é apenas uma captura de tela da nossa conversação sobre programação interativa, feita para facilitar a legendagem e a tradução. É melhor assistir nossas conversações aqui: https://www.khanacademy.org/cs/programming/.
- Video Language:
- English
- Duration:
- 05:06
![]() |
Retired user edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) | |
![]() |
Carlos Augusto Nantes edited Portuguese, Brazilian subtitles for Local and Global Variables (Video Version) |