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