es5-compliance
Original:🇺🇸 English
Translated
This skill should be used when the user asks to "write a business rule", "create a script include", "write server-side code", "fix SyntaxError", "background script", "scheduled job", "workflow script", or any ServiceNow server-side JavaScript development.
6installs
Sourcegroeimetai/snow-flow
Added on
NPX Install
npx skill4agent add groeimetai/snow-flow es5-complianceTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →ES5 Compliance for ServiceNow
ServiceNow runs on Mozilla Rhino engine which only supports ES5 JavaScript (2009 standard). All server-side scripts MUST use ES5 syntax.
Forbidden Syntax (WILL CAUSE SyntaxError)
| ES6+ Syntax | ES5 Alternative |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| Use |
| Use constructor functions |
| Use GlideRecord callbacks |
| Use GlideRecord with callbacks |
Common Patterns
Variable Declarations
javascript
// WRONG - ES6
const MAX_RETRIES = 3;
let currentUser = gs.getUser();
// CORRECT - ES5
var MAX_RETRIES = 3;
var currentUser = gs.getUser();Functions
javascript
// WRONG - Arrow functions
var active = incidents.filter(inc => inc.active);
var process = () => { return 'done'; };
// CORRECT - ES5 functions
var active = [];
for (var i = 0; i < incidents.length; i++) {
if (incidents[i].active) {
active.push(incidents[i]);
}
}
var process = function() { return 'done'; };String Concatenation
javascript
// WRONG - Template literals
var message = `Incident ${number} assigned to ${user}`;
// CORRECT - String concatenation
var message = 'Incident ' + number + ' assigned to ' + user;Loops
javascript
// WRONG - for...of
for (var item of items) {
gs.info(item);
}
// CORRECT - Traditional for loop
for (var i = 0; i < items.length; i++) {
gs.info(items[i]);
}Default Parameters
javascript
// WRONG - Default parameters
function process(incident, priority = 3) {
// ...
}
// CORRECT - Manual defaults
function process(incident, priority) {
if (typeof priority === 'undefined') {
priority = 3;
}
// ...
}Automatic Validation
Before deploying any server-side script:
- Check for /
constdeclarations - convert toletvar - Check for arrow functions - convert to
=>function() - Check for template literals - convert to string concatenation
` - Check for destructuring - convert to explicit property access
{a, b} - Check for loops - convert to index-based loops
for...of
Exception: Client Scripts
Client-side scripts (Client Scripts, UI Policies) run in the browser and MAY support ES6+ depending on user's browser. However, for maximum compatibility, ES5 is still recommended.