Em primeiro lugar, existe um conceito: não é uma linguagem que suporta funções. Esta linguagem pode ser chamada de “linguagem funcional”. Além de serem chamadas, funções em linguagens funcionais também possuem algumas outras propriedades. Existem três pontos:
1. Funções são operandos
2. Salve os dados dentro da função
3. As operações dentro da função não têm efeitos colaterais fora da função
1. Funções são operandos
Ao chamar uma função normal, ela pode ser entendida abstratamente como: a função é um operador e os parâmetros passados são os operandos;
Mas quando uma função em JavaScript é usada como parâmetro de outra função, uma referência é passada, e esse “parâmetro de entrada” pode ser entendido como um operando. A conclusão é que as funções (como "parâmetros de entrada") têm o significado de operandos e os "parâmetros de função" não são diferentes dos parâmetros comuns.
2. Salve os dados dentro da função
Em linguagens imperativas, variáveis privadas (variáveis locais) dentro de funções não podem ser salvas. Do ponto de vista da execução do programa, as variáveis locais são alocadas na pilha e, após o término da execução da função, a pilha ocupada é liberada. Portanto, os dados dentro da função não podem ser salvos.
Em uma função JavaScript, as variáveis privadas dentro da função podem ser modificadas e, ao "entrar" na função novamente, o estado modificado continuará. O exemplo a seguir ilustra esse recurso:
Copie o código do código da seguinte forma:
var conjunto,obter;
function MinhaFunc(){
var valor = 100;
função set_value(v){
valor=v;
}
função get_value(){
valor de retorno;
}
conjunto = conjunto_valor;
obter = obter_valor;
}
MinhaFunc();
console.log(get());
conjunto(300);
console.log(get());
Um benefício óbvio é que se um dado puder ser persistido dentro de uma função, então a função (como construtor) poderá usar os dados para executar operações quando atribuída a uma instância e entre múltiplas instâncias, uma vez que os dados existem em diferentes In; fechamento, eles não afetarão um ao outro.
Para explicar em termos orientados a objetos, significa que diferentes instâncias possuem seus próprios dados privados (copiados de alguns dados públicos). O exemplo a seguir ilustra esse recurso:
Copie o código do código da seguinte forma:
function MeuObjeto(){
var valor = 100;
this.setValue = function(){
valor=v;
}
this.showValue = function(){
console.log(valor);
}
}
var obj1 = new MeuObjeto();
var obj2 = new MeuObjeto();
obj2.setValue(300);
obj1.showValue();
3. As operações dentro da função não têm efeitos colaterais fora da função
O significado deste recurso é:
* A função usa o parâmetro de entrada para realizar operações sem modificá-lo (usado como parâmetro de valor em vez de parâmetro variável)
* O valor de outros dados fora da função (como variáveis globais) não será modificado durante a operação.
* Após a conclusão da operação, o valor é transferido para o sistema externo através de “retorno de função”
Tais funções não têm efeitos colaterais no sistema externo durante a operação. No entanto, notamos que o JavaScript permite que variáveis globais sejam referenciadas e modificadas dentro de funções, e variáveis globais podem até ser declaradas. Na verdade, isso destrói suas características funcionais.
Além disso, JavaScript também permite que membros de objetos e arrays sejam modificados dentro de funções - esses membros devem ser modificados por métodos de objetos em vez de outras funções fora do sistema de objetos.
Portanto: Esse recurso do JavaScript só pode ser garantido pelos hábitos de programação dos desenvolvedores.