---
sourceDocument: 호주 API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/api-reference

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# JavaScript 모드 전환에 대한 고려 사항

# JavaScript 모드 전환에 대한 고려 사항 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 4분

애플리케이션 또는 스크립트의 JavaScript 모드를 전환하면 기존 스크립트의 동작이 변경될 수 있습니다. JavaScript 모드를 전환하기 전에 동작 변경에 대한 몇 가지 예를 검토하거나 전환 후에 발생하는 문제를 해결합니다.

각 JavaScript 모드에 대한 자세한 내용은 및 [JavaScript 엔진 기능 지원](https://servicenow-prod.fluidtopics.net/~q5~UFNbT1cfbUHYk0EKlg "에서 ECMAScript 2021(ES12)과 ES5 표준 JavaScript 모드 Australia간의 ECMAScript 기능을 비교합니다. 두 모드 모두 ECMAScript 기능의 하위 집합을 지원합니다.")문서를 참조하십시오[JavaScript 모드](https://servicenow-prod.fluidtopics.net/UrXGJKXZSUuhl~dgQ7EtRQ "JavaScript 모드는 사용자 지정 애플리케이션 및 스크립트에 대한 설계 및 런타임 설정입니다. 기존 서버 측 스크립트와 ECMAScript 2021 표준에 따라 개발된 새 스크립트를 지원하기 위해 JavaScript 엔진에는 ECMAScript 2021(ES12), ES5 표준 및 호환성의 세 가지 모드가 있습니다.").

이 표에서는 JavaScript 동작이 관대하고 오류가 발생하기 쉬운 ES5 이전 환경에서 더 엄격하고 예측 가능한 ES5, 마지막으로 ES12의 기능이 풍부한 환경으로 어떻게 발전했는지 강조합니다(ECMAScript 2021).  
{#considerations-switching-javascript-mode__table_r4b_j4r_fcc__entry__4}

| 기능 | 호환성 모드 | ES5 표준 모드 | ECMAScript 2021(ES12) |
|-|-|-|-|
| 인수 객체 | `arguments` 객체가 존재하지만 `엄격 모드`가 없으므로 수정 사항이 `인수`에 반영됩니다. 인쇄물: *** Script: [object Arguments] *** Script: [object Arguments] *** Script: [object Arguments] *** Script: 123 {#considerations-switching-javascript-mode__codeblock_xph_2vz_pcc} | 엄격 모드에서 arguments 개체는 매개 변수 수정을 반영하지 않으며 오류를 throw합니다. 인쇄물: sn_es5: 123 sn_es5: undefined sn_es5: [object Arguments] sn_es5: 123 {#considerations-switching-javascript-mode__codeblock_yph_2vz_pcc} | ES5와 동일합니다. |
| 부울 재정의 | 기본 부울(`예`, `아니오`)을 재정의하여 예기치 않은 동작을 일으킬 수 있습니다. | 기본 부울은 더 보호되지만 변수에 할당할 때 재정의될 수 있습니다. | ES5와 동일하지만 엄격 모드는 일부 할당을 방지하는 데 도움이 됩니다. 조건식은 다음 형식으로 작성해야 합니다. (cond_expr instanceof Boolean ? cond_expr.valueOf() : cond_expr). {#considerations-switching-javascript-mode__codeblock_zph_2vz_pcc} |
| 구문 오류에 대한 예외 | 구문 오류는 런타임에 예외를 발생시킵니다. 오류 처리가 일관되지 않습니다. 예제: Javascript compiler exception: unterminated string literal (null.null.script; line 1) in: var b = ' {#considerations-switching-javascript-mode__codeblock_aqh_2vz_pcc} | 특히 엄격 모드에서 보다 일관된 구문 오류 처리. 예제: Evaluator: com.glide.script.RhinoEcmaError: unterminated string literal script : Line(1) column(9) ==>   1: var b = ' {#considerations-switching-javascript-mode__codeblock_bqh_2vz_pcc} | ES5와 동일하지만 업데이트된 엔진에서 더 강력한 처리와 더 명확한 오류 메시지가 있습니다. 예제: SyntaxError: Unterminated string constant at line 1 ==>   1: var b = ' {#considerations-switching-javascript-mode__codeblock_cqh_2vz_pcc} |
| 증가 및 감소 | 변수에는 허용되지만 복잡한 표현식에서는 예기치 않게 동작할 수 있습니다. 인쇄물: *** Script: c: 1 *** Script: gr.related_incidents: 1 *** Script: 2 *** Script: 3 {#considerations-switching-javascript-mode__codeblock_dqh_2vz_pcc} | 명확성이 향상되었지만 여전히 변수(`var`, `let`, `const`)에서 허용됩니다. 인쇄물: sn_es5: c: 0 sn_es5: gr.related_incidents: 1 sn_es5: 1 sn_es5: 2 {#considerations-switching-javascript-mode__codeblock_eqh_2vz_pcc} | ES5와 동일하지만 일부 컨텍스트에서는 더 엄격한 규칙( `예: const`)이 있습니다. |
| 라인 연속 | 백슬래시(`\`)와 함께 사용할 수 있지만 가독성 문제로 인해 권장되지 않습니다. 이 예시에서는 세 개의 함수가 모두 호출됩니다. var expr = doFoo();  // do foo doBar();  // do bar finish();   // all done eval(expr); {#considerations-switching-javascript-mode__codeblock_fqh_2vz_pcc} | 호환성 모드와 동일합니다. 라인 연속 처리에 변경 사항이 없습니다. 이전 예제에서 ES5는 첫 번째 함수만 호출하고 표현식이 끝날 때까지 줄 바꿈을 포함하여 첫 번째 주석 뒤의 모든 것을 주석으로 처리합니다. | ES5와 동일하지만 템플릿 리터럴은 더 읽기 쉬운 대안을 제공합니다. |
| 세미콜론 누락 | 자동 세미콜론 삽입(ASI)은 종종 예기치 않은 동작으로 이어졌습니다. | 세미콜론이 누락되면 구문 오류가 발생합니다. | ES5와 동일합니다. 업데이트된 관행은 명시적 세미콜론을 권장합니다. |
| 존재하지 않는 함수 | 존재하지 않는 함수를 호출하면 `ReferenceError`가 발생합니다. | 함수가 아닌 항목이 호출되면 `TypeError` 를 발생시킵니다. | 존재하지 않는 함수가 호출되거나 속성이 참조되면 EcmaError를 발생시킵니다. |
| 존재하지 않는 속성 | 존재하지 않는 속성에 액세스하면 `정의되지 않음이 반환됩니다.` 오류가 발생하지 않았습니다. | ES5 이전과 동일합니다. | 호환성 모드 및 ES5 표준 모드와 동일합니다. |
| 숫자 리터럴 | 기본 10진수 및 16진수 리터럴. | 더 엄격한 구문 분석 규칙과 더 나은 숫자 리터럴 처리가 도입되었습니다. | 이진수(`0b`), 8진수(`0o`) 및 BigInt 리터럴(`123n`)이 추가되었습니다. |
| 속성으로 예약된 키워드 | 예약된 키워드를 사용할 수 없습니다. | 예약된 키워드는 오류 없이 속성 이름으로 사용할 수 있습니다(예: `obj.for`). 반환되면 객체를 인쇄합니다. | ES5와 동일합니다. |
| let 및 yield를 키워드로 취급 | `let` 및 `yield` 는 키워드가 아니며 식별자로만 사용할 수 있습니다. | `let` 가 키워드로 소개되었습니다. `Yield` 는 엄격 모드에서 예약되어 있습니다. | 둘 다 키워드입니다. 이를 식별자로 사용하면 구문 오류가 발생합니다. |
[표 1. JavaScript 모드에서의 동작 차이]

{#considerations-switching-javascript-mode__table_r4b_j4r_fcc}

