Variáveis estáticas em JavaScript

Harshit Jindal 12 outubro 2023
  1. Use a propriedade de uma função para criar variáveis ​​estáticas em JavaScript
  2. Use IIFE (Immediately Invoked Function Expression) para criar variáveis ​​estáticas em JavaScript
  3. Use o arguments.callee para criar variáveis ​​estáticas em JavaScript
  4. Use construtores para criar variáveis ​​estáticas em JavaScript
Variáveis estáticas em JavaScript

Este tutorial apresenta como criar variáveis ​​estáticas em JavaScript. Variáveis ​​estáticas são variáveis, normalmente usadas em funções, que mantêm seu valor entre chamadas de função. A palavra-chave static ajuda a definir uma propriedade ou método estático de uma classe.

Use a propriedade de uma função para criar variáveis ​​estáticas em JavaScript

Funções em JavaScript são objetos e podem ter propriedades. Portanto, podemos criar variáveis ​​estáticas declarando as propriedades da função. Eles mantêm seus valores como variáveis ​​globais e não podem ser modificados fora das funções, tornando-os muito mais organizados do que as variáveis ​​globais.

function getId() {
  if (typeof getId.counter == 'undefined') {
    getId.counter = 0;
  }
  alert(++getId.counter);
}

Chamar a função acima várias vezes aumenta o valor do contador e não pode ser acessado fora da função como variáveis ​​globais parando toda a bagunça.

Use IIFE (Immediately Invoked Function Expression) para criar variáveis ​​estáticas em JavaScript

IIFE são funções que são executadas assim que são definidas. Consiste em duas partes:

  1. Uma função anônima com um escopo léxico delimitado pelo operador de agrupamento ().
  2. Expressão de função que é interpretada diretamente pelo JavaScript.
var incr = (function() {
  var i = 1;
  return function() {
    return i++;
  }
})();
incr();  // returns 1
incr();  // returns 2

Cada vez que a função é chamada, o contador i aumenta em um. i é inacessível externamente porque é propriedade de uma função, assim como uma variável estática típica dentro de uma classe.

Use o arguments.callee para criar variáveis ​​estáticas em JavaScript

Podemos usar arguments.callee para armazenar variáveis ​​estáticas em JavaScript. Refere-se à função que está sendo executada atualmente, e podemos anexar propriedades a ela diretamente, como faríamos com um objeto de função.

function() {
  arguments.callee.myStaticVar = arguments.callee.myStaticVar || 1;
  arguments.callee.myStaticVar++;
  alert(arguments.callee.myStaticVar);
}

Este método é muito semelhante ao método 1, com a única diferença sendo, em vez de anexar diretamente as propriedades, estamos usando arguments.callee para adicionar propriedades à função atualmente em execução.

Use construtores para criar variáveis ​​estáticas em JavaScript

Este método é a versão equivalente de linguagens orientadas a objetos fortemente tipadas como C++ / Java / C#. Tentamos atribuir variáveis ​​a um tipo inteiro e não a todas as instâncias.

function delftClass() {
  var privateVariable = 'foo';
  this.publicVariable = 'bar';
  this.privilegedMethod = function() {
    alert(privateVariable);
  };
}
delftClass.prototype.publicMethod = function() {
  alert(this.publicVariable);
};

delftClass.staticProperty = 'baz';
var myInstance = new delftClass();

Aqui, criamos a função de construção delftClass e atribuímos uma propriedade estática que não tem nada a ver com a instância criada. JavaScript trata funções como objetos, portanto, sendo um objeto, podemos atribuir propriedades a uma função. Todas as instâncias compartilharão a variável estática.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artigo relacionado - JavaScript Variable