JavaScript modes
Summarize
Summary of JavaScript modes
JavaScript mode in ServiceNow controls the design and runtime environment for custom applications and scripts, determining which JavaScript features are available. There are three modes available to support different ECMAScript standards and legacy behaviors: ECMAScript 2021 (ES12), ES5 Standards, and Compatibility mode. Each mode aligns with specific scripting needs and compatibility requirements within scoped and global applications.
Show less
JavaScript Modes and Their Uses
- ECMAScript 2021 (ES12) mode: This is the default for new scoped applications and can be enabled for individual scripts in global applications. It supports modern JavaScript features from ECMAScript 2021 and 2022, such as default parameters, arrow functions, classes, optional chaining, and more. It does not preserve legacy behaviors from pre-Tokyo versions.
- ES5 Standards mode: The default for new global applications and optionally used in scoped applications. It supports ECMAScript 5 syntax and features like "use strict", enhanced object property control, native JSON support, and compatibility with popular third-party libraries like lodash.js and moment.js. It does not preserve legacy behaviors from pre-Helsinki versions.
- Compatibility mode: Maintains compatibility with scripts developed before ES5 Standards mode was introduced. It differs from earlier JavaScript engines primarily in JSON handling and does not support third-party libraries. Legacy JSON methods remain available but are recommended only when legacy behavior is necessary.
Practical Considerations for ServiceNow Customers
- Switching JavaScript modes can alter the behavior of existing scripts. Customers should review potential impacts and test thoroughly before changing modes in applications or scripts.
- Application-wide JavaScript mode settings determine which ECMAScript features developers can use, helping ensure compatibility and leveraging modern language capabilities.
- Even when an application uses ES5 Standards or Compatibility mode, individual scripts can be enabled for ECMAScript 2021 (ES12) mode to utilize the latest JavaScript features where needed.
Next Steps
ServiceNow customers should configure JavaScript modes based on their application type and scripting requirements, balancing the need for modern language features with legacy compatibility. Learning resources like the "Let's Learn ECMAScript 2021" videos on the ServiceNow Dev Program YouTube channel can aid in adopting ES12 features effectively.
JavaScript mode is a design and runtime setting for custom applications and scripts. To support existing server-side scripts and new scripts developed to the ECMAScript 2021 standard, the JavaScript engine has three modes: ECMAScript 2021 (ES12), ES5 Standards, and Compatibility.
The JavaScript mode controls which JavaScript features you have access to in an application or script. The default mode for new scoped applications is ECMAScript 2021 (ES12) and for new global applications, it’s ES5 Standards. You can also turn on ECMAScript 2021 (ES12) mode for individual scripts in applications that use ES5 Standards or Compatibility mode.
For more information about features supported by the ECMAScript 2021 (ES12) and ES5 Standards modes, see JavaScript engine feature support.
ECMAScript 2021 (ES12) mode
ECMAScript 2021 (ES12) mode is the default mode when you create new scoped applications. It isn't supported for global applications but can be turned on for individual global scripts.
When you create new scripts, ECMAScript 2021 (ES12) mode is turned on by default regardless of the JavaScript mode configured for the application. This mode doesn’t preserve the legacy behaviors in the pre-Tokyo JavaScript engine.
- Default function parameters
- Rest parameters
- For-of loops
- Template literals
- Destructuring
- Declarations
- Assignment
- Parameters
- Const declaration
- Let declaration
- Arrow functions
- Class declarations
- Map set
- Optional chaining operator
(?.)
To learn about specific ECMAScript 2021 (ES12) features, see the Let's Learn ECMAScript 2021 videos on the ServiceNow Dev Program YouTube channel.
ES5 Standards mode
ES5 Standards mode is the default mode for new global applications and is an option for scoped applications. This mode doesn’t preserve the legacy behaviors in the pre-Helsinki JavaScript engine.
- The "use strict" declaration
- Control over extensibility of objects
- Get and set properties on objects (accessors)
- Control over writability, configurability, and enumerability of object properties
- New Array and Date methods
- Native JSON support
- Support for modern third-party libraries such as lodash.js and moment.js
Compatibility mode
Compatibility mode is used for all scripts developed prior to the addition of ES5 Standards mode. Compatibility mode has some differences from the previous JavaScript engine.
- JSON.stringify() and JSON.parse() are implemented using the ES5 Native JSON object.
- The new JSON().encode() and new JSON().decode() are still supported, but should only be used when the legacy behavior is required.
The use of third-party JavaScript libraries isn’t supported in Compatibility mode.