ECMAScriptとのJavaScript対比
CGJSのJavaScriptは、Common Lispを実装した経験をもとに、サーバー側でCGIとして動作するよう作成された
インタープリタ(Compileされた中間コードの解釈・実行)で、JavaScriptのStatementでDBを操作するアプリケーションが
簡単に記述ができるようにと作成されたものです。
ECMAScriptの規格を参考に作成され、文法は同じですが、規格に記述されている全機能が作成されてるのではありません。
Statementは必ずセミコロン(;)で終了してください。中間行のStatementが改行だけで終わっているとエラーになります。
また、大部分の機能は実装されていますが、使用頻度が低いObject、Methodなど実装されてないものがあります。
ECMAScriptの規格の中で、実装/非実装の機能、規格と異なる点は以下の通りです。
実装されている機能で、特に注意書きがない部分については、WebでECMAScriptのリファレンスサイトを参照してください。
1.組み込みオブジェクト
実装されている部分は黒字で、実装されていない部分は、赤字で記載されています。
■ 値プロパティ
undefined Infinity NaN globalThis
■ 関数プロパティ
encodeURIComponent() encodeURI() parseFloat()
eval() decodeURIComponent() decodeURI() parseInt()
uneval() isFinite() isNaN() escape() unescape()
■ 基本オブジェクト
Object Function Boolean Symbol
■ エラーオブジェクト
Error Exception(※拡張)
AggregateError InternalError RangeError
EvalError ReferenceError SyntaxError
TypeError URIError
■ 数値と日付
Number Math Date BigInt
■ テキスト処理
String RegExp
■ 索引付きコレクション
Array Int8Array Int16Array Int32Array
BigInt64Array Uint8Array Uint16Array Uint32Array
BigUint64Array Float32Array Float64Array
Uint8ClampedArray
■ キー付きコレクション
Hash Map Set WeakMap WeakSet
■ 構造化データ
JSON Atomics Atomics ArrayBuffer
SharedArrayBuffer
■ 制御抽象化オブジェクト
Promise AsyncFunction GeneratorFunction Generator
AsyncGenerator AsyncGeneratorFunction
■ リフレクション
Reflect Proxy
■ 国際化
Intl WebAssembly
■ その他
arguments
2.式と演算子
実装している機能
Addition(+) | Addition assignment(+=) | Assignment (=) |
Bitwise AND(&) | Bitwise AND assignment(&=) | Bitwise NOT (~) |
Bitwise OR(|) | Bitwise OR assignment(|=) | Bitwise XOR (^) |
Bitwise XOR assignment(^=) | Comma operator(,) | Conditional (ternary) operator |
Decrement(--) | Division (/) | Division assignment (/=) |
Equality(==) | Exponentiation (**) | Function expression |
Greater than(>) | Greater than or equal (>=) | Grouping operator ( ) |
Increment(++) | Inequality(!=) | instanceof |
Left shift(<<) | Left shift assignment(<<=) | Less than (<) |
Less than or equal(<=) | Logical AND (&&) | Logical NOT (!) |
Logical OR(||) | Multiplication(*) | Multiplication assignment (*=) |
new operator | Operator precedence | Remainder (%) |
Remainder assignment(%=) | Right shift (>>) | Right shift assignment (>>=) |
Strict equality(===) | Strict inequality(!==) | Subtraction (-) |
Subtraction assignment(-=) | this | typeof |
Unary negation(-) | Unary plus(+) | Unsigned right shift (>>>) |
Unsigned right shift assignment(>>>=) |
実装していない機能
async function expression | AsyncGenerator | AsyncGeneratorFunction |
await | class expression | delete operator |
Destructuring assignment | function* expression | Generator |
GeneratorFunction | in operator | Expressions and operators |
Exponentiation assignment(**=) | Logical nullish assignment(??=) | Logical AND assignment(&&=) |
Logical OR assignment(||=) | new.target | Nullish coalescing operator(??) |
Optional chaining(?.) | Object initializer | Property accessors |
super | Spread syntax(...) | void operator |
yield | yield* |
3.文と宣言
実装している機能
block break const continue do...while
empty for for...in for...of function declaration
if...else let return switch Statements and declarations
throw try...catch var while
実装していない文・宣言
async function class debugger export
for await...of function* import import.meta
label with
4.関数
実装している機能
Default parameters Functions Method definitions
実装していない機能
The arguments object Arrow function expressions getter
Rest parameters setter