---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

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) 所要時間：5分

アプリケーションまたはスクリプトで JavaScript モードを切り替えると、既存のスクリプトの動作が変わる場合があります。JavaScript モードを切り替える前、または切り替え後に発生した問題のトラブルシューティングを行う前に、動作変化の例をいくつか確認してください。

JavaScript モードの詳細については、「[JavaScript モード](https://servicenow-prod.fluidtopics.net/zb5Ya6oCiIIyoxPjvoXpEg "JavaScript モードは、カスタムアプリケーションとスクリプトの設計および実行時の設定です。既存のサーバー側スクリプトと、ECMAScript 2021 標準に合わせて新しく開発されたスクリプトをサポートするために、JavaScript エンジンには ECMAScript 2021 (ES12)、ES5 標準、および互換の 3 つのモードがあります。")」および「[JavaScript エンジン機能のサポート](https://servicenow-prod.fluidtopics.net/TqRyZ3g1hhrjU51ybsoZwA "Australia の ECMAScript 2021 (ES12) と ES5 標準 JavaScript モード間の ECMAScript 機能を比較します。どちらのモードも ECMAScript 機能のサブセットをサポートしています。")」を参照してください。

この表は、JavaScript の動作が、寛容でエラーが発生しやすい ES5 以前の環境から、より厳格で予測可能な ES5、そして最後に ES12 (ECMAScript 2021) のより機能豊富な環境へとどのように進化したかを示しています。  
{#considerations-switching-javascript-mode__table_r4b_j4r_fcc__entry__4}

| 機能 | 互換モード | ES5 標準モード | ECMAScript 2021 (ES12) |
|-|-|-|-|
| Arguments オブジェクト | `arguments` オブジェクトは存在しますが、`strict モード`がないため、変更は `arguments` に反映されます。出力： *** Script: [object Arguments] *** Script: [object Arguments] *** Script: [object Arguments] *** Script: 123 {#considerations-switching-javascript-mode__codeblock_xph_2vz_pcc} | strict モードでは、arguments オブジェクトはパラメーターの変更を反映せず、エラーをスローします。出力： sn_es5: 123 sn_es5: undefined sn_es5: [object Arguments] sn_es5: 123 {#considerations-switching-javascript-mode__codeblock_yph_2vz_pcc} | ES5 と同じです。 |
| ブール値の上書き | プリミティブのブール値 (`true`、`false`) を上書きできますが、予期しない動作が発生する可能性があります。 | プリミティブのブール値はより保護されていますが、変数に代入すると上書きできます。 | ES5 と同じですが、strict モードでは一部の代入を防ぐことができます。条件式は、次の形式で記述する必要があります。 (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} | 特に strict モードでの、より一貫性のある構文エラー処理。例： 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` など) でより厳格なルールがあります。 |
| 行の継続 | バックスラッシュ (`\`) で指定できますが、読みやすさの問題のためお勧めしません。この例では、3 つの関数がすべて呼び出されます。 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 をスローします。 |
| 存在しないプロパティ | 存在しないプロパティがアクセスされると、`undefined` を返します。スローされるエラーはありません。 | ES5 以前と同じです。 | 互換モードおよび ES5 標準モードと同じです。 |
| 数値リテラル | 基本的な 10 進数および 16 進数リテラル。 | より厳格な解析ルールが導入され、数値リテラルの処理が改善されました。 | 2 進数 (`0b`)、8 進数 (`0o`)、BigInt リテラル (`123n`) が追加されました。 |
| プロパティとして予約済みのキーワード | 予約済みキーワードを使用することはできません。 | 予約済みキーワードは、`obj.for` のようにプロパティ名として使用でき、エラーはありません。返されたときにオブジェクトを出力します。 | ES5 と同じです。 |
| let と yield のキーワード扱い | `let` と `yield` はキーワードではなく、識別子としてのみ使用できます。 | `let` がキーワードとして導入されています。`yield` は strict モードで予約されています。 | どちらもキーワードです。これらを識別子として使用すると、構文エラーがスローされます。 |
[表 : 1. JavaScript モードでの動作の違い]

{#considerations-switching-javascript-mode__table_r4b_j4r_fcc}

