O objeto de função em JS é uma coisa fascinante, mas geralmente é confuso porque é muito flexível.
Deixe -me mostrar um trecho de código primeiro.
var scope = "global"; functuctfunction () {var scope = "local"; retorna nova função ("return scope");} constructfunction () () (); functuctfunction2 () {var scope = "local"; return function () {return scope;}} constructfunction2 () ();Qual é o seu primeiro sentimento quando você vê esses dois? Todos retornam "local"? ? Se for esse o caso, você precisa examinar mais de perto a explicação abaixo. ConstructFunction2 () deve ser fácil de entender o fechamento, e não vou entrar em detalhes aqui. Em seguida, vou me concentrar na situação do constructfunção ().
O construtor function () é usado aqui. Embora o construtor function () não seja muito comum, ainda é necessário entendê -lo.
Seja uma instrução de definição de função ou uma expressão quantitativa direta de função, a definição da função deve usar a palavra -chave function (). Funções únicas também podem ser definidas pelo construtor function (), como:
var f = nova função ("x", "y", "return x*y");O efeito real dessa linha é equivalente à seguinte linha de código.
var f = função (x, y) {x*y};O construtor function () pode passar em qualquer número de argumentos de string, e o texto representado pelo último argumento é o corpo da função; Ele pode conter qualquer declaração JavaScript e cada declaração é dividida por um ponto e vírgula. Todas as outras seqüências de argumentos passadas para o construtor são strings que especificam o nome da função. Se a função definida não contiver parâmetros, basta passar um corpo de função de string para o construtor.
Existem vários pontos para prestar atenção especial sobre o construtor function ():
1. O construtor da função () permite que o JavaScript crie e compilar dinamicamente funções em tempo de execução.
2. Sempre que o construtor da função () é chamado, o corpo da função será analisado e um novo objeto de função será criado. Se esse construtor for executado em um loop ou várias chamadas, a eficiência da execução será afetada. Por outro lado, funções aninhadas e expressões de definição de função nos loops não são recompiladas toda vez que forem executadas.
2. O último ponto também é um ponto muito importante sobre o construtor function (), ou seja, as funções que cria não usam o escopo lexical. Pelo contrário, a compilação do código do corpo da função sempre será executada na função de nível superior. Depois de ler isso, a função de construção de função acima () (); Deve ser fácil entender retornar "global"?
O acima é o construtor JS function () introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!