W3cubDocs

/nginx

Compatibility

njs is created in compliance with ECMAScript 5.1 (strict mode) with some ECMAScript 6 and later extensions. The compliance is still evolving.

Definitions of njs specific properties and methods not compliant with ECMAScript can be found in Reference. Definitions of njs properties and methods compliant with ECMAScript can be found in ECMAScript specification.

What is currently supported

  • Boolean values, numbers, strings, objects, arrays, functions, function constructors (0.3.6), and regular expressions
  • ES5.1 operators, ES7 exponentiation operators
  • ES5.1 statements: break, catch, continue, do while, else, finally, for, for in, if, return, switch, throw, try, var, while, labeled statements (0.2.8)
  • Math properties:
    • ES6: E, LN10, LN2, LOG10E, LOG2E, PI, SQRT1_2, SQRT2
  • Math methods:
    • ES6: abs, acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, ceil, clz32, cos, cosh, exp, expm1, floor, fround, hypot, imul, log, log10, log1p, log2, max, min, pow, random, round, sign, sin, sinh, sqrt, tan, tanh, trunc
  • Number properties:
    • ES6: EPSILON, MAX_SAFE_INTEGER, MAX_VALUE, MIN_SAFE_INTEGER, MIN_VALUE, NEGATIVE_INFINITY, NaN, POSITIVE_INFINITY
  • Number methods:
    • ES6: isFinite, isInteger, isNaN, isSafeInteger, parseFloat, parseInt
  • Number instance methods:
  • String methods:
    • ES5.1: fromCharCode
    • ES6: fromCodePoint
  • String instance methods:
    • ES5.1: charAt, concat, indexOf, lastIndexOf, match, replace, search, slice, split, substr, substring, toLowerCase, trim, toUpperCase
    • ES6: codePointAt, endsWith, includes, repeat, startsWith
    • ES8: padEnd, padStart
    • ES9: trimEnd (0.3.4), trimStart (0.3.4)
    • non-standard: bytesFrom (0.2.3), fromBytes, fromUTF8, toBytes, toUTF8
  • Object methods:
    • ES5.1: create (support without properties list), defineProperties (accessor descriptors support since 0.3.3), defineProperty (accessor descriptors support since 0.3.3), freeze, getOwnPropertyDescriptor, getOwnPropertyDescriptors (0.3.1), getOwnPropertyNames (0.3.1), getPrototypeOf, isExtensible, isFrozen, isSealed, keys, preventExtensions, seal
    • ES6: assign (0.3.7)
    • ES8: entries (0.2.7), values (0.2.7)
  • Object instance methods:
    • ES5.1: hasOwnProperty, isPrototypeOf, (0.3.0), propertyIsEnumerable, toString, valueOf
    • ES6: is (0.3.8), setPrototypeOf (0.3.8)
  • Array methods:
    • ES5.1: isArray
    • ES6: of
  • Array instance methods:
    • ES5.1: concat, every, filter, forEach, indexOf, join, lastIndexOf, map, pop, push, reduce, reduceRight, reverse, shift, slice, some, sort, splice, unshift
    • ES6: copyWithin (0.3.7), fill, find, findIndex
    • ES7: includes
  • ArrayBuffer methods (0.3.8):
    • ES6: isView
  • ArrayBuffer instance methods (0.3.8):
    • ES6: slice
  • Typed-array constructors (0.3.8):
    • ES6: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array
  • Typed-array instance methods (0.3.8):
  • Buffer methods (0.4.4):
  • Buffer instance methods: (0.4.4):
  • Promise methods (0.3.8):
    • ES6: reject, resolve
  • Promise instance methods (0.3.8):
    • ES6: catch, finally, then
  • Function instance methods:
    • ES5.1: apply, bind, call
  • RegExp instance methods:
    • ES5.1: exec, test, toString
  • RegExp ES9 named capture groups (0.3.2)
  • DataView instance methods (0.4.4):
    • ES6: getFloat32, getFloat64, getInt16, getInt32, getInt8, getUint16, getUint32, getUint8, setFloat32, setFloat64, setInt16, setInt32, setInt8, setUint16, setUint32, setUint8
  • Date methods:
    • ES5.1: now, parse, UTC
  • Date instance methods:
    • ES5.1: getDate, getDay, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime, getTimezoneOffset, getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, toDateString, toISOString, toLocaleDateString, toLocaleString, toLocaleTimeString, toTimeString, toUTCString, setDate, setFullYear, setHours, setMinutes, setMilliseconds, setMonth, setSeconds, setTime, setUTCDate, setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth, setUTCSeconds
  • JSON methods:
    • ES5.1: parse stringify
  • ES5.1 arguments object (0.2.5)
  • ES6 rest parameters syntax (without destructuring support) (0.2.7)
  • ES5.1 global functions: decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, isFinite, isNaN, parseFloat, parseInt
  • Error objects: Error, EvalError, InternalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
  • clearTimeout and setTimeout functions (0.2.0)
  • File system methods: fs.accessSync (0.3.9), fs.appendFileSync, fs.mkdirSync (0.4.2), fs.readdirSync (0.4.2), fs.readFileSync, fs.realpathSync (0.3.9), fs.renameSync (0.3.4), fs.rmdirSync (0.4.2), fs.symlinkSync (0.3.9), fs.unlinkSync (0.3.9), fs.writeFileSync
  • fs.promises API (0.3.9), asynchronous version of file system methods.
  • Crypto methods (0.2.0): crypto.createHash, crypto.createHmac
  • Query String methods (0.4.3): querystring.decode, querystring.encode, querystring.escape, querystring.parse, querystring.stringify, querystring.unescape
  • TextDecoder methods (0.4.3): encoding, fatal, ignoreBOM, decode
  • TextEncoder methods (0.4.3): encoding, encode, encodeInto
  • ES6 modules support: default export and default import statements (0.3.0)
  • ES6 arrow functions (0.3.1)
  • Template literals: multiline strings, expression interpolation, nesting templates (0.3.2)
  • Global objects (0.3.3):

© 2002-2020 Igor Sysoev
© 2011-2020 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/njs/compatibility.html