view xml/en/docs/njs/compatibility.xml @ 2339:a72bd8324c0b

Added njs labeled statements to Compatibility.
author Yaroslav Zhuravlev <yar@nginx.com>
date Wed, 27 Feb 2019 15:30:11 +0300
parents fb5e1d2d4c75
children 21f3a93fbe97
line wrap: on
line source

<?xml version="1.0"?>

<!--
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">

<article name="Compatibility"
        link="/en/docs/njs/compatibility.html"
        lang="en"
        rev="8"
        toc="no">

<section>

<para>
njs is created in compliance with
<link url="http://www.ecma-international.org/ecma-262/5.1/">ECMAScript 5.1</link>
(strict mode) with some
<link url="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6</link>
and later extensions.
The compliance is still evolving.
</para>

</section>


<section id="supported" name="What is currently supported">

<para>
<list type="bullet">

<listitem>
Boolean values, numbers, strings, objects, arrays,
functions, and regular expressions
</listitem>

<listitem>
ES5.1 operators, ES7 exponentiation operators
</listitem>

<listitem>
ES5.1 statements: <literal>var</literal>, <literal>if</literal>,
<literal>else</literal>, <literal>switch</literal>, <literal>for</literal>,
<literal>for in</literal>, <literal>while</literal>,
<literal>do while</literal>, <literal>break</literal>,
<literal>continue</literal>, <literal>return</literal>, <literal>try</literal>,
<literal>catch</literal>, <literal>throw</literal>, <literal>finally</literal>,
labeled statements (<link doc="changes.xml" id="njs0.2.8">0.2.8</link>)
</listitem>

<listitem>
ES6 <literal>Number</literal> and
<literal>Math</literal> properties and methods
</listitem>

<listitem>
<literal>String</literal> methods:
<list type="bullet">

<listitem>
ES5.1:
<link doc="reference.xml" id="string_fromcharcode"><literal>fromCharCode</literal></link>,
<link doc="reference.xml" id="string_concat"><literal>concat</literal></link>,
<link doc="reference.xml" id="string_slice"><literal>slice</literal></link>,
<link doc="reference.xml" id="string_substring"><literal>substring</literal></link>,
<link doc="reference.xml" id="string_substr"><literal>substr</literal></link>,
<link doc="reference.xml" id="string_charat"><literal>charAt</literal></link>,
<link doc="reference.xml" id="string_indexof"><literal>indexOf</literal></link>,
<link doc="reference.xml" id="string_lastindexof"><literal>lastIndexOf</literal></link>,
<link doc="reference.xml" id="string_tolowercase"><literal>toLowerCase</literal></link>,
<link doc="reference.xml" id="string_touppercase"><literal>toUpperCase</literal></link>,
<link doc="reference.xml" id="string_trim"><literal>trim</literal></link>,
<link doc="reference.xml" id="string_search"><literal>search</literal></link>,
<link doc="reference.xml" id="string_match"><literal>match</literal></link>,
<link doc="reference.xml" id="string_split"><literal>split</literal></link>,
<link doc="reference.xml" id="string_replace"><literal>replace</literal></link>
</listitem>

<listitem>
ES6:
<link doc="reference.xml" id="string_fromcodepoint"><literal>fromCodePoint</literal></link>,
<link doc="reference.xml" id="string_codepointat"><literal>codePointAt</literal></link>,
<link doc="reference.xml" id="string_includes"><literal>includes</literal></link>,
<link doc="reference.xml" id="string_startswith"><literal>startsWith</literal></link>,
<link doc="reference.xml" id="string_endswith"><literal>endsWith</literal></link>,
<link doc="reference.xml" id="string_repeat"><literal>repeat</literal></link>
</listitem>

<listitem>
ES8:
<link doc="reference.xml" id="string_padstart"><literal>padStart</literal></link>,
<link doc="reference.xml" id="string_padend"><literal>padEnd</literal></link>
</listitem>

<listitem>
non-standard:
<link doc="reference.xml" id="string_bytesfrom"><literal>bytesFrom</literal></link> (0.2.3)
<link doc="reference.xml" id="string_fromutf8"><literal>fromUTF8</literal></link>,
<link doc="reference.xml" id="string_toutf8"><literal>toUTF8</literal></link>,
<link doc="reference.xml" id="string_frombytes"><literal>fromBytes</literal></link>,
<link doc="reference.xml" id="string_tobytes"><literal>toBytes</literal></link>
</listitem>
</list>

</listitem>

<listitem>
<literal>Object</literal> methods:
<list type="bullet">
<listitem>
ES5.1:
<literal>create</literal> (support without properties list),
<literal>keys</literal>,
<literal>defineProperty</literal> (support without accessor descriptors),
<literal>defineProperties</literal> (support without accessor descriptors),
<literal>getOwnPropertyDescriptor</literal>,
<literal>getPrototypeOf</literal>,
<literal>hasOwnProperty</literal>,
<literal>isPrototypeOf</literal>,
<literal>preventExtensions</literal>,
<literal>isExtensible</literal>,
<literal>freeze</literal>,
<literal>isFrozen</literal>,
<literal>seal</literal>,
<literal>isSealed</literal>
</listitem>

<listitem>
ES8:
<link doc="reference.xml" id="object_entries"><literal>entries</literal></link>
(<link doc="changes.xml" id="njs0.2.7">0.2.7</link>),
<link doc="reference.xml" id="object_values"><literal>values</literal></link>
(<link doc="changes.xml" id="njs0.2.7">0.2.7</link>)
</listitem>
</list>

</listitem>

<listitem>
<literal>Array</literal> methods:
<list type="bullet">
<listitem>
ES5.1:
<literal>isArray</literal>, <literal>slice</literal>, <literal>splice</literal>,
<literal>push</literal>, <literal>pop</literal>, <literal>unshift</literal>,
<literal>shift</literal>, <literal>reverse</literal>, <literal>sort</literal>,
<literal>join</literal>, <literal>concat</literal>, <literal>indexOf</literal>,
<literal>lastIndexOf</literal>, <literal>forEach</literal>,
<literal>some</literal>, <literal>every</literal>, <literal>filter</literal>,
<literal>map</literal>, <literal>reduce</literal>,
<literal>reduceRight</literal>
</listitem>

<listitem>
ES6:
<literal>of</literal>, <literal>fill</literal>, <literal>find</literal>,
<literal>findIndex</literal>
</listitem>

<listitem>
ES7: <literal>includes</literal>
</listitem>
</list>

</listitem>

<listitem>
ES5.1 <literal>Function</literal> methods:
<literal>call</literal>, <literal>apply</literal>, <literal>bind</literal>
</listitem>

<listitem>
ES5.1 <literal>RegExp</literal> methods:
<literal>test</literal>, <literal>exec</literal>
</listitem>

<listitem>
ES5.1 <literal>Date</literal> methods
</listitem>

<listitem>
ES5.1 <link doc="reference.xml" id="core_json"><literal>JSON</literal></link> object
</listitem>

<listitem>
ES5.1 <literal>arguments</literal> object (0.2.5)
</listitem>

<listitem>
ES6 rest parameters syntax (without destructuring support)
(<link doc="changes.xml" id="njs0.2.7">0.2.7</link>)
</listitem>

<listitem>
ES5.1 global functions:
<literal>isFinite</literal>, <literal>isNaN</literal>,
<literal>parseFloat</literal>, <literal>parseInt</literal>,
<link doc="reference.xml" id="decodeuri"><literal>decodeURI</literal></link>,
<link doc="reference.xml" id="decodeuricomponent"><literal>decodeURIComponent</literal></link>,
<link doc="reference.xml" id="encodeuri"><literal>encodeURI</literal></link>,
<link doc="reference.xml" id="encodeuricomponent"><literal>encodeURIComponent</literal></link>
</listitem>

<listitem>
<literal>Error</literal> objects:
<literal>Error</literal>, <literal>EvalError</literal>,
<literal>InternalError</literal>, <literal>RangeError</literal>,
<literal>ReferenceError</literal>, <literal>SyntaxError</literal>,
<literal>TypeError</literal>, <literal>URIError</literal>
</listitem>

<listitem>
<link doc="reference.xml" id="settimeout"><literal>setTimeout</literal></link>
and
<link doc="reference.xml" id="cleartimeout"><literal>clearTimeout</literal></link>
functions (0.2.0)
</listitem>

<listitem>
<literal>File system</literal> methods:
<link doc="reference.xml" id="readfilesync"><literal>fs.readFileSync</literal></link>,
<link doc="reference.xml" id="appendfilesync"><literal>fs.appendFileSync</literal></link>,
<link doc="reference.xml" id="writefilesync"><literal>fs.writeFileSync</literal></link>
</listitem>

<listitem>
<literal>Crypto</literal> methods (0.2.0):
<link doc="reference.xml" id="crypto_createhash"><literal>crypto.createHash</literal></link>,
<link doc="reference.xml" id="crypto_createhmac"><literal>crypto.createHmac</literal></link>
</listitem>

</list>
</para>

</section>

</article>