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) - ES6 statements:
let
(0.6.0),const
(0.6.0) -
Math
properties:- ES6:
E
,LN10
,LN2
,LOG10E
,LOG2E
,PI
,SQRT1_2
,SQRT2
- ES6:
-
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
- ES6:
-
Number
properties:- ES6:
EPSILON
,MAX_SAFE_INTEGER
,MAX_VALUE
,MIN_SAFE_INTEGER
,MIN_VALUE
,NEGATIVE_INFINITY
,NaN
,POSITIVE_INFINITY
- ES6:
-
Number
methods:- ES6:
isFinite
,isInteger
,isNaN
,isSafeInteger
,parseFloat
,parseInt
- ES6:
-
Number
prototype methods: -
String
methods:- ES5.1:
fromCharCode
- ES6:
fromCodePoint
- ES5.1:
-
String
prototype 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
- ES5.1:
-
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)
- ES5.1:
-
Object
prototype methods: -
Array
methods:- ES5.1:
isArray
- ES6:
of
- ES5.1:
-
Array
prototype 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
- ES5.1:
-
ArrayBuffer
methods (0.3.8):- ES6:
isView
- ES6:
-
ArrayBuffer
prototype methods (0.3.8):- ES6:
slice
- ES6:
-
Typed-array
constructors (0.3.8):- ES6:
Int8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,Float32Array
,Float64Array
- ES6:
-
Typed-array
prototype methods (0.3.8): -
Buffer
methods (0.4.4): -
Buffer
prototype methods: (0.4.4):-
compare
,copy
,equals
,fill
,includes
,indexOf
,lastIndexOf
,readIntBE
,readInt8
,readInt16BE
,readInt32BE
,readIntLE
,readInt8
,readInt16LE
,readInt32LE
,readUIntBE
,readUInt8
,readUInt16BE
,readUInt32BE
,readUIntLE
,readUInt8
,readUInt16LE
,readUInt32LE
,readDoubleBE
,readDoubleLE
,readFloatBE
,readFloatLE
,subarray
,slice
,swap16
,swap32
,swap64
,toJSON
,toString
,write
,writeIntBE
,writeInt8
,writeInt16BE
,writeInt32BE
,writeIntLE
,writeInt8
,writeInt16LE
,writeInt32LE
,writeUIntBE
,writeUInt8
,writeUInt16BE
,writeUInt32BE
,writeUIntLE
,writeUInt8
,writeUInt16LE
,writeUInt32LE
,writeDoubleBE
,writeDoubleLE
,writeFloatBE
,writeFloatLE
-
-
Promise
methods (0.3.8):- ES6:
reject
,resolve
- ES6:
-
Promise
prototype methods (0.3.8):- ES6:
catch
,finally
,then
- ES6:
-
Function
prototype methods:- ES5.1:
apply
,bind
,call
- ES5.1:
-
RegExp
prototype accessor properties: -
RegExp
prototype methods: -
RegExp
instance properties:-
lastIndex
-
-
RegExp
ES9 named capture groups (0.3.2) -
DataView
prototype methods (0.4.4):- ES6:
getFloat32
,getFloat64
,getInt16
,getInt32
,getInt8
,getUint16
,getUint32
,getUint8
,setFloat32
,setFloat64
,setInt16
,setInt32
,setInt8
,setUint16
,setUint32
,setUint8
- ES6:
-
Date
methods:- ES5.1:
now
,parse
,UTC
- ES5.1:
-
Date
prototype 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
- ES5.1:
-
JSON
methods:- ES5.1:
parse
stringify
- ES5.1:
- 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
andsetTimeout
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):encode
,encodeInto
- ES6 modules support: default
export
and defaultimport
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-2021 Igor Sysoev
© 2011-2021 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/njs/compatibility.html