comparison xml/en/docs/njs/compatibility.xml @ 2245:87a0e2c73a25

Refactored njs documentation.
author Yaroslav Zhuravlev <yar@nginx.com>
date Mon, 24 Sep 2018 19:10:29 +0300
parents
children b001d6903fc1
comparison
equal deleted inserted replaced
2244:467aef18bf12 2245:87a0e2c73a25
1 <?xml version="1.0"?>
2
3 <!--
4 Copyright (C) Nginx, Inc.
5 -->
6
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8
9 <article name="Compatibility"
10 link="/en/docs/njs/compatibility.html"
11 lang="en"
12 rev="1">
13
14 <section>
15
16 <para>
17 njs is created in compliance with
18 <link url="http://www.ecma-international.org/ecma-262/5.1/">ECMAScript 5.1</link>
19 (strict mode) with some
20 <link url="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6</link>
21 and later extensions.
22 The compliance is still evolving.
23 </para>
24
25 </section>
26
27
28 <section id="supported" name="What is currently supported">
29
30 <para>
31 <list type="bullet">
32
33 <listitem>
34 Boolean values, numbers, strings, objects, arrays,
35 functions, and regular expressions
36 </listitem>
37
38 <listitem>
39 ES5.1 operators, ES7 exponentiation operators
40 </listitem>
41
42 <listitem>
43 ES5.1 statements: <literal>var</literal>, <literal>if</literal>,
44 <literal>else</literal>, <literal>switch</literal>, <literal>for</literal>,
45 <literal>for in</literal>, <literal>while</literal>,
46 <literal>do while</literal>, <literal>break</literal>,
47 <literal>continue</literal>, <literal>return</literal>, <literal>try</literal>,
48 <literal>catch</literal>, <literal>throw</literal>, <literal>finally</literal>
49 </listitem>
50
51 <listitem>
52 ES6 <literal>Number</literal> and
53 <literal>Math</literal> properties and methods
54 </listitem>
55
56 <listitem>
57 <literal>String</literal> methods:
58 <list type="bullet">
59
60 <listitem>
61 ES5.1:
62 <literal>fromCharCode</literal>, <literal>concat</literal>,
63 <literal>slice</literal>, <literal>substring</literal>,
64 <literal>substr</literal>, <literal>charAt</literal>,
65 <literal>charCodeAt</literal>, <literal>indexOf</literal>,
66 <literal>lastIndexOf</literal>, <literal>toLowerCase</literal>,
67 <literal>toUpperCase</literal>, <literal>trim</literal>,
68 <literal>search</literal>, <literal>match</literal>, <literal>split</literal>,
69 <literal>replace</literal>
70 </listitem>
71
72 <listitem>
73 ES6:
74 <literal>fromCodePoint</literal>, <literal>codePointAt</literal>,
75 <literal>includes</literal>, <literal>startsWith</literal>,
76 <literal>endsWith</literal>, <literal>repeat</literal>
77 </listitem>
78
79 <listitem>
80 non-standard:
81 <literal>bytesFrom</literal> (0.2.3)
82 <literal>fromUTF8</literal>, <literal>toUTF8</literal>,
83 <literal>fromBytes</literal>, <literal>toBytes</literal>
84 </listitem>
85 </list>
86
87 </listitem>
88
89 <listitem>
90 <literal>Object</literal> methods:
91 <list type="bullet">
92 <listitem>
93 ES5.1:
94 <literal>create</literal> (support without properties list),
95 <literal>keys</literal>,
96 <literal>defineProperty</literal>,
97 <literal>defineProperties</literal>,
98 <literal>getOwnPropertyDescriptor</literal>,
99 <literal>getPrototypeOf</literal>,
100 <literal>hasOwnProperty</literal>,
101 <literal>isPrototypeOf</literal>,
102 <literal>preventExtensions</literal>,
103 <literal>isExtensible</literal>,
104 <literal>freeze</literal>,
105 <literal>isFrozen</literal>,
106 <literal>seal</literal>,
107 <literal>isSealed</literal>
108 </listitem>
109 </list>
110
111 </listitem>
112
113 <listitem>
114 <literal>Array</literal> methods:
115 <list type="bullet">
116 <listitem>
117 ES5.1:
118 <literal>isArray</literal>, <literal>slice</literal>, <literal>splice</literal>,
119 <literal>push</literal>, <literal>pop</literal>, <literal>unshift</literal>,
120 <literal>shift</literal>, <literal>reverse</literal>, <literal>sort</literal>,
121 <literal>join</literal>, <literal>concat</literal>, <literal>indexOf</literal>,
122 <literal>lastIndexOf</literal>, <literal>forEach</literal>,
123 <literal>some</literal>, <literal>every</literal>, <literal>filter</literal>,
124 <literal>map</literal>, <literal>reduce</literal>,
125 <literal>reduceRight</literal>
126 </listitem>
127
128 <listitem>
129 ES6:
130 <literal>of</literal>, <literal>fill</literal>, <literal>find</literal>,
131 <literal>findIndex</literal>
132 </listitem>
133
134 <listitem>
135 ES7: <literal>includes</literal>
136 </listitem>
137 </list>
138
139 </listitem>
140
141 <listitem>
142 ES5.1 <literal>Function</literal> methods:
143 <literal>call</literal>, <literal>apply</literal>, <literal>bind</literal>
144 </listitem>
145
146 <listitem>
147 ES5.1 <literal>RegExp</literal> methods:
148 <literal>test</literal>, <literal>exec</literal>
149 </listitem>
150
151 <listitem>
152 ES5.1 <literal>Date</literal> methods
153 </listitem>
154
155 <listitem>
156 ES5.1 <literal>JSON</literal> object
157 </listitem>
158
159 <listitem>
160 ES5.1 global functions:
161 <literal>isFinite</literal>, <literal>isNaN</literal>,
162 <literal>parseFloat</literal>, <literal>parseInt</literal>,
163 <literal>decodeURI</literal>, <literal>decodeURIComponent</literal>,
164 <literal>encodeURI</literal>, <literal>encodeURIComponent</literal>
165 </listitem>
166
167 <listitem>
168 <literal>Error</literal> objects:
169 <literal>Error</literal>, <literal>EvalError</literal>,
170 <literal>InternalError</literal>, <literal>RangeError</literal>,
171 <literal>ReferenceError</literal>, <literal>SyntaxError</literal>,
172 <literal>TypeError</literal>, <literal>URIError</literal>
173 </listitem>
174
175 <listitem>
176 <literal>setTimeout()</literal> and <literal>clearTimeout()</literal> functions
177 (0.2.0)
178 </listitem>
179
180 <listitem>
181 <link url="https://nodejs.org/api/fs.html#fs_file_system">Node.js style</link>
182 <literal>File system</literal> methods:
183 <literal>fs.readFile</literal>, <literal>fs.readFileSync</literal>,
184 <literal>fs.appendFile</literal>, <literal>fs.appendFileSync</literal>,
185 <literal>fs.writeFile</literal>, <literal>fs.writeFileSync</literal>
186 </listitem>
187
188 <listitem>
189 <link url="https://nodejs.org/api/crypto.html#crypto_class_hash">Node.js style</link>
190 <literal>Crypto</literal> methods (0.2.0):
191 <literal>crypto.createHash</literal>,
192 <literal>crypto.createHmac</literal>
193
194 </listitem>
195
196 </list>
197 </para>
198
199 </section>
200
201
202 <section id="not_supported" name="What is not supported yet">
203
204 <para>
205 <list type="bullet">
206
207 <listitem>
208 ES6 <literal>let</literal> and <literal>const</literal> declarations
209 </listitem>
210
211 <listitem>
212 labels
213 </listitem>
214
215 <listitem>
216 <literal>arguments</literal> array
217 </listitem>
218
219 <listitem>
220 <literal>eval</literal> function
221 </listitem>
222
223 <listitem>
224 <literal>new Function()</literal> constructor
225 </listitem>
226
227 <listitem>
228 <literal>setInterval</literal>,
229 <literal>setImmediate</literal> functions
230 </listitem>
231
232 <listitem>
233 non-integer fractions (<literal>.235</literal>)
234 </listitem>
235
236 </list>
237 </para>
238
239 </section>
240
241 </article>
242