XFA JavaScript 事件作用域
单元:HPDFXFAEventScript,经 HPDFXFARuntime 集成
具名别名与本地声明
事件宿主把合格的具名表单节点解析进外层事件作用域;input 是可访问的具名字段时,事件可以继续使用 input.rawValue
用户事件体有自己的 JavaScript 函数作用域,const、let 与 class 声明可以遮蔽字段别名,不会与宿主生成的变量声明冲突
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
本地 var 与 function 声明同样遵循普通 JavaScript 作用域规则;显式本地绑定遮蔽外层别名,词法绑定在初始化前不可用
宿主保留名与非法标识符仍被排除在自动字段别名之外;这些名称可用 xfa.resolveNode 显式查找
执行上下文与 strict 模式
事件体的 this 仍是正在执行的表单节点,显式返回值继续流向 calculate 或 validate 完成处理
开头的 use strict 指令现在保持为用户体指令;给未声明变量赋值会抛错而不是创建全局绑定
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
事务与生命周期
语法错误、暂时性死区 ReferenceError 或 strict 模式 ReferenceError 会中止事件并还原其原生 form/datasets 快照,包括运行时错误之前已执行的写入
成功的原生写入在保存的 XDP 重载后仍存在;本地事件变量属于该次调用,variables 脚本对象保持既定持久词法状态与闭包行为
嵌套作用域不增加 host transport 调用,也不改变脚本、内存、操作与重放预算