XFA JavaScript 이벤트 스코프

유닛: HPDFXFAEventScript, HPDFXFARuntime으로 통합

이름 있는 앨리어스와 지역 선언

이벤트 호스트는 대상이 되는 이름 있는 폼 노드를 바깥 이벤트 스코프로 풉니다. input이 접근 가능한 이름 있는 필드면 이벤트가 계속 input.rawValue를 쓸 수 있습니다

사용자 이벤트 body는 자신의 JavaScript 함수 스코프를 갖습니다. const, let, class 선언이 호스트가 만든 변수 선언과 충돌하지 않고 필드 앨리어스를 가릴 수 있습니다

const input = xfa.resolveNode("main.input");
input.rawValue = "saved";

지역 var와 function 선언도 보통 JavaScript 스코프 규칙을 따릅니다. 명시적 지역 바인딩이 바깥 앨리어스를 가리고, 어휘 바인딩은 초기화 전에는 쓸 수 없습니다

호스트 예약 이름과 잘못된 식별자는 자동 필드 앨리어스에서 계속 제외됩니다. 그런 이름은 xfa.resolveNode로 명시적으로 조회하세요

실행 컨텍스트와 strict 모드

이벤트 body의 this는 실행 중인 폼 노드로 남고, 명시적 반환 값은 계속 calculate·validate 완료 처리로 흘러갑니다

처음의 use strict 디렉티브는 이제 사용자 body의 디렉티브로 남습니다. 선언하지 않은 변수 할당은 전역 바인딩을 만드는 대신 throw합니다

"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;

트랜잭션과 수명

문법 오류, temporal dead zone ReferenceError, strict 모드 ReferenceError는 이벤트를 중단하고 런타임 오류 전에 이루어진 쓰기를 포함해 네이티브 폼·데이터셋 스냅샷을 복원합니다

성공한 네이티브 쓰기는 저장 XDP 재로드에서 살아남습니다. 지역 이벤트 변수는 그 호출에 속하고, variables 스크립트 객체는 기존 영속 어휘 상태와 클로저 동작을 유지합니다

중첩 스코프는 호스트 전송 호출을 더하거나 스크립트·메모리·연산·리플레이 예산을 바꾸지 않습니다

관련 API

HPDFXFAExecuteJavaScriptEvent, 대화형 XFA 런타임, 네이티브 없는 속성 생성