Boa tarde, Raul
Os parâmetro também são variáveis, muitas vezes pode aconteceu um confusão no escopo dessa variável, em javascript o escopo ele delimitado pelas chaves { }
, observe o código seguinte
<script>
var frase = `Observe que existem duas variáveis com o mesmo nome,
mas elas estão em escopos diferentes</br>`; /* Esta variável é global, ou seja,
ela pode ser acessada de qualquer lugar do código, qualquer escopo.*/
function mostra(frase) {
// Dentro dessa função, frase é uma variável local, no escopo da função mostra.
// Se quiséssemos acessar a variável global, usaria o `this.frase´
document.write(frase);
console.log(this.frase);// this.frase é uma variável de fora do escopo da função
var souDaFuncao = "Estou dentro da função"; // souDaFuncao é uma variável local, so pode sere acessada daqui
}
//console.log(souDaFuncao); Isso não funciona, pois souDaFuncao é uma variável local da função mostra
mostra(frase);
var nome = "Raul";// Esta variável também é global.
// var sempre são globais.
mostra(`Estou no escopo de ${nome}</br>`); // nome é uma variável do escopo global
// Esse é o começo do escopo delimitado pelas chaves {}.
{// Isso não é uma função, mas sim um escopo delimitado pelas chaves {}.
let nome = "Nicolas"
mostra(`Agora Estou no escopo de ${nome}</br>`); // Aqui nome é uma variável local.
// Para eu acessar a variável definida fora desse escopo, eu preciso usar o this keyword.
//Exemplo:
mostra(`Eu ${this.nome} estou fora desse escopo mas consigo ser acessado do escopo de ${nome}</br>`)
let x = 10;// X foi criado aqui é so pode ser acessado dentro desse escopo
var y = 20;// Y foi criado aqui mas pode ser acessado de qualquer lugar. mas isso não funciona em funções.
}
// x não pode ser acessado fora do escopo delimitado pelas chaves {}.
console.log(`y = ${y}`);// usado y é um var que foi criado no escopo Nicolas que não não é uma função, então pode ser acessado
mostra(`Agora estou no escopo de ${nome} de volta </br>`); // nome é uma variável do escopo global
</script>
No código temos variáveis que possuem nomes iguais, mas estão em escopos diferentes. pode-se dizer que o escopo é o "tempo da vida de uma variável", algumas tem um espoco grande e podem ser acessara por escopos interiores e que são menores e só podem ser acessadas "localmente".