Escopo de eventos JavaScript do XFA
Unit: HPDFXFAEventScript, integrada por HPDFXFARuntime
Aliases nomeados e declarações locais
O event host resolve nós de formulário nomeados elegíveis para o escopo externo do evento; um evento pode continuar usando input.rawValue quando input é um campo nomeado acessível
O corpo de user events tem seu próprio escopo de função JavaScript, então declarações const, let e class podem fazer shadowing de um alias de campo sem conflitar com declarações de variáveis geradas pelo host
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Declarações locais de var e function também usam as regras comuns de escopo do JavaScript; bindings locais explícitos fazem shadowing de um alias externo, e um binding lexical permanece indisponível antes da sua inicialização
Nomes reservados pelo host e identificadores inválidos permanecem excluídos dos aliases automáticos de campos; xfa.resolveNode fornece lookup explícito para esses nomes
Contexto de execução e strict mode
O this do corpo do evento permanece sendo o nó de formulário em execução, e um valor de retorno explícito continua fluindo para o processamento de conclusão de calculate ou validate
Uma diretiva use strict inicial agora permanece sendo a diretiva do corpo do usuário; atribuir a uma variável não declarada lança erro em vez de criar um binding global
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transações e tempo de vida
Um erro de sintaxe, um ReferenceError de temporal dead zone ou um ReferenceError de strict mode aborta o evento e restaura seu snapshot nativo de formulário/datasets, incluindo escritas feitas antes de um erro de runtime
Escritas nativas bem-sucedidas sobrevivem ao reload do XDP salvo; variáveis locais do evento pertencem àquela invocação, enquanto objetos de script variables retêm seu estado lexical persistente estabelecido e seu comportamento de closures
O escopo aninhado não adiciona chamadas de transporte do host nem muda os orçamentos de script, memória, operações e replay
APIs relacionadas
HPDFXFAExecuteJavaScriptEvent, Runtime XFA interativo e Criação nativa de propriedades ausentes