

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# JavaScript fitur runtime untuk Fungsi CloudFront
<a name="functions-javascript-runtime-features"></a>

Lingkungan JavaScript runtime CloudFront Functions sesuai dengan [ECMAScript (ES) versi 5.1](https://www.ecma-international.org/ecma-262/5.1/) dan juga mendukung beberapa fitur ES versi 6 hingga 12.

Untuk sebagian besar up-to-date fitur, kami menyarankan Anda menggunakan JavaScript runtime 2.0. 

Fitur JavaScript runtime 2.0 memiliki perubahan berikut dibandingkan dengan 1.0:
+ Metode modul buffer tersedia
+ Metode prototipe string non-standar berikut tidak tersedia:
  + `String.prototype.bytesFrom()`
  + `String.prototype.fromBytes()`
  + `String.prototype.fromUTF8()`
  + `String.prototype.toBytes()`
  + `String.prototype.toUTF8()`
+ Modul kriptografi memiliki perubahan berikut:
  + `hash.digest()`— Jenis pengembalian diubah menjadi `Buffer` jika tidak ada pengkodean yang disediakan
  + `hmac.digest()`— Jenis pengembalian diubah menjadi `Buffer` jika tidak ada pengkodean yang disediakan
+ Untuk informasi selengkapnya tentang fitur baru tambahan, lihat[JavaScript fitur runtime 2.0 untuk Fungsi CloudFront](functions-javascript-runtime-20.md).

**Topics**
+ [JavaScript fitur runtime 1.0](functions-javascript-runtime-10.md)
+ [JavaScript fitur runtime 2.0](functions-javascript-runtime-20.md)

# JavaScript fitur runtime 1.0 untuk Fungsi CloudFront
<a name="functions-javascript-runtime-10"></a>

Lingkungan JavaScript runtime CloudFront Functions sesuai dengan [ECMAScript (ES) versi 5.1](https://262.ecma-international.org/5.1/) dan juga mendukung beberapa fitur ES versi 6 hingga 9. Lingkungan ini juga menyediakan beberapa metode standar yang bukan bagian dari spesifikasi ES. 

Topik berikut mencantumkan semua fitur bahasa yang didukung.

**Topics**
+ [

## Fitur inti
](#writing-functions-javascript-features-core)
+ [

## Objek primitif
](#writing-functions-javascript-features-primitive-objects)
+ [

## Objek bawaan
](#writing-functions-javascript-features-builtin-objects)
+ [

## Jenis kesalahan
](#writing-functions-javascript-features-error-types)
+ [

## Global
](#writing-functions-javascript-features-globals)
+ [

## Modul bawaan
](#writing-functions-javascript-features-builtin-modules)
+ [

## Fitur yang dibatasi
](#writing-functions-javascript-features-restricted-features)

## Fitur inti
<a name="writing-functions-javascript-features-core"></a>

Mendukung fitur inti ES berikut.

**Jenis**  
Mendukung semua jenis ES 5.1. Ini termasuk nilai, angka, string, objek, susunan, fungsi, konstruktor fungsi, dan ekspresi reguler Boolean.

**Operator**  
Mendukung Semua operator ES 5.1 didukung.  
Mendukung operator eksponensial ES 7 (`**`).

**Pernyataan**  
Tidak mendukung pernyataan `const` dan `let`.
Mendukung pernyataan ES 5.1 berikut:  
+ `break`
+ `catch`
+ `continue`
+ `do-while`
+ `else`
+ `finally`
+ `for`
+ `for-in`
+ `if`
+ `return`
+ `switch`
+ `throw`
+ `try`
+ `var`
+ `while`
+ Pernyataan berlabel

**Literal**  
Literal template ES 6 didukung: string multiline, interpolasi ekspresi, dan templat bersarang.

**Fungsi**  
Mendukung semua fitur fungsi ES 5.1.  
Mendukung fungsi panah ES 6 didukung, dan sintaks parameter ES 6 sintaks parameter istirahat.

**Unicode**  
Sumber teks dan literal string dapat berisi karakter Unicode yang dikodekan. Juga mendukung unicode code point escape sequence enam karakter (misalnya, `\uXXXX`).

**Mode ketat**  
Fungsi beroperasi dalam mode ketat secara default, sehingga Anda tidak perlu menambahkan pernyataan `use strict` dalam kode fungsi Anda. Ini tidak dapat diubah.

## Objek primitif
<a name="writing-functions-javascript-features-primitive-objects"></a>

Mendukung objek primitif ES berikut.

**Objek**  
Mendukung metode ES 5.1 berikut pada objek:  
+ `create` (tanpa daftar properti)
+ `defineProperties`
+ `defineProperty`
+ `freeze`
+ `getOwnPropertyDescriptor`
+ `getOwnPropertyNames`
+ `getPrototypeOf`
+ `hasOwnProperty`
+ `isExtensible`
+ `isFrozen`
+ `prototype.isPrototypeOf`
+ `isSealed`
+ `keys`
+ `preventExtensions`
+ `prototype.propertyIsEnumerable`
+ `seal`
+ `prototype.toString`
+ `prototype.valueOf`
Mendukung metode ES 6 berikut pada objek:  
+ `assign`
+ `is`
+ `prototype.setPrototypeOf`
Mendukung metode ES 8 berikut pada objek:  
+ `entries`
+ `values`

**String**  
Mendukung metode ES 5.1 berikut pada string:  
+ `fromCharCode`
+ `prototype.charAt`
+ `prototype.concat`
+ `prototype.indexOf`
+ `prototype.lastIndexOf`
+ `prototype.match`
+ `prototype.replace`
+ `prototype.search`
+ `prototype.slice`
+ `prototype.split`
+ `prototype.substr`
+ `prototype.substring`
+ `prototype.toLowerCase`
+ `prototype.trim`
+ `prototype.toUpperCase`
Mendukung metode ES 6 berikut pada string:  
+ `fromCodePoint`
+ `prototype.codePointAt`
+ `prototype.endsWith`
+ `prototype.includes`
+ `prototype.repeat`
+ `prototype.startsWith`
Mendukung metode ES 8 berikut pada string:  
+ `prototype.padStart`
+ `prototype.padEnd`
Mendukung metode ES 9 berikut pada string:  
+ `prototype.trimStart`
+ `prototype.trimEnd`
Mendukung metode tidak standar berikut pada string:  
+ `prototype.bytesFrom(array | string, encoding)`

  Menciptakan string byte dari susunan oktet atau string yang dikodekan. Opsi pengkodean string adalah `hex`, `base64`, dan `base64url`.
+ `prototype.fromBytes(start[, end])`

  Menciptakan string Unicode dari string byte di mana setiap byte diganti dengan titik kode Unicode yang sesuai.
+ `prototype.fromUTF8(start[, end])`

  Menciptakan string Unicode dari UTF-8 string byte yang dikodekan. Jika pengkodean salah, akan muncul `null`.
+ `prototype.toBytes(start[, end])`

  Menciptakan string byte dari string Unicode. Semua karakter harus dalam rentang [0,255]. Jika tidak, akan muncul `null`.
+ `prototype.toUTF8(start[, end])`

  Menciptakan UTF-8 string byte yang dikodekan dari string Unicode.

**Nomor**  
Mendukung semua metode ES 5.1 pada nomor.  
Mendukung metode ES 6 berikut pada nomor:  
+ `isFinite`
+ `isInteger`
+ `isNaN`
+ `isSafeInteger`
+ `parseFloat`
+ `parseInt`
+ `prototype.toExponential`
+ `prototype.toFixed`
+ `prototype.toPrecision`
+ `EPSILON`
+ `MAX_SAFE_INTEGER`
+ `MAX_VALUE`
+ `MIN_SAFE_INTEGER`
+ `MIN_VALUE`
+ `NEGATIVE_INFINITY`
+ `NaN`
+ `POSITIVE_INFINITY`

## Objek bawaan
<a name="writing-functions-javascript-features-builtin-objects"></a>

Mendukung objek ES bawaan berikut.

**Matematika**  
Mendukung semua metode matematika ES 5.1.  
Di lingkungan runtime CloudFront Functions, `Math.random()` implementasi menggunakan `arc4random` OpenBSD yang diunggulkan dengan stempel waktu saat fungsi berjalan.
Mendukung metode matematika ES 6 berikut:  
+ `acosh`
+ `asinh`
+ `atanh`
+ `cbrt`
+ `clz32`
+ `cosh`
+ `expm1`
+ `fround`
+ `hypot`
+ `imul`
+ `log10`
+ `log1p`
+ `log2`
+ `sign`
+ `sinh`
+ `tanh`
+ `trunc`
+ `E`
+ `LN10`
+ `LN2`
+ `LOG10E`
+ `LOG2E`
+ `PI`
+ `SQRT1_2`
+ `SQRT2`

**Tanggal**  
Mendukung semua fitur ES 5.1 `Date`.  
Untuk alasan keamanan, `Date` selalu mengembalikan nilai yang sama—waktu mulai fungsi ini—saat menjalankan fungsi tunggal. Untuk informasi selengkapnya, lihat [Fitur yang dibatasi](#writing-functions-javascript-features-restricted-features).

**Fungsi**  
Mendukung metode `apply`, `bind`, dan `call`.  
Tidak mendukung konstruktor fungsi.

**Ekspresi reguler**  
Mendukung semua fitur ekspresi reguler ES 5.1. Bahasa ekspresi reguler adalah kompatibel dengan Perl. Mendukung kelompok penangkap bernama ES 9.

**JSON**  
Mendukung semua fitur JSON ES 5.1 JSON, termasuk `parse` dan `stringify`.

**Susunan**  
Mendukung metode ES 5.1 berikut pada susunan:  
+ `isArray`
+ `prototype.concat`
+ `prototype.every`
+ `prototype.filter`
+ `prototype.forEach`
+ `prototype.indexOf`
+ `prototype.join`
+ `prototype.lastIndexOf`
+ `prototype.map`
+ `prototype.pop`
+ `prototype.push`
+ `prototype.reduce`
+ `prototype.reduceRight`
+ `prototype.reverse`
+ `prototype.shift`
+ `prototype.slice`
+ `prototype.some`
+ `prototype.sort`
+ `prototype.splice`
+ `prototype.unshift`
Mendukung metode ES 6 berikut pada susunan:  
+ `of`
+ `prototype.copyWithin`
+ `prototype.fill`
+ `prototype.find`
+ `prototype.findIndex`
Mendukung metode ES 7 berikut pada susunan:  
+ `prototype.includes`

**Susunan yang dijeniskan**  
Mendukung susunan yang diketik ES 6 berikut:  
+ `Int8Array`
+ `Uint8Array`
+ `Uint8ClampedArray`
+ `Int16Array`
+ `Uint16Array`
+ `Int32Array`
+ `Uint32Array`
+ `Float32Array`
+ `Float64Array`
+ `prototype.copyWithin`
+ `prototype.fill`
+ `prototype.join`
+ `prototype.set`
+ `prototype.slice`
+ `prototype.subarray`
+ `prototype.toString`

**ArrayBuffer**  
Mendukung metode pada `ArrayBuffer` berikut:  
+ `prototype.isView`
+ `prototype.slice`

**Janji**  
Mendukung metode janji berikut:  
+ `reject`
+ `resolve`
+ `prototype.catch`
+ `prototype.finally`
+ `prototype.then`

**Kripto**  
Modul kriptografi menyediakan hashing standar dan pembantu kode autentikasi pesan berbasis hash (HMAC). Anda dapat memuat modul menggunakan `require('crypto')`. Modul ini memperlihatkan metode berikut yang berperilaku persis seperti rekan-rekan Node.js mereka:  
+ `createHash(algorithm)`
+ `hash.update(data)`
+ `hash.digest([encoding])`
+ `createHmac(algorithm, secret key)`
+ `hmac.update(data)`
+ `hmac.digest([encoding])`
Untuk informasi lebih lanjut, lihat [Kripto (hash dan HMAC)](#writing-functions-javascript-features-builtin-modules-crypto) di bagian modul bawaan.

**Konsol**  
Ini adalah objek pembantu untuk debugging. Ini hanya mendukung metode `log()`, untuk merekam pesan log.  
CloudFront Fungsi tidak mendukung sintaks koma, seperti. `console.log('a', 'b')` Sebagai gantinya, gunakan `console.log('a' + ' ' + 'b')` formatnya.

## Jenis kesalahan
<a name="writing-functions-javascript-features-error-types"></a>

Mendukung objek kesalahan berikut:
+ `Error`
+ `EvalError`
+ `InternalError`
+ `MemoryError`
+ `RangeError`
+ `ReferenceError`
+ `SyntaxError`
+ `TypeError`
+ `URIError`

## Global
<a name="writing-functions-javascript-features-globals"></a>

Mendukung objek `globalThis`.

Mendukung fungsi global ES 5.1 berikut:
+ `decodeURI`
+ `decodeURIComponent`
+ `encodeURI`
+ `encodeURIComponent`
+ `isFinite`
+ `isNaN`
+ `parseFloat`
+ `parseInt`

Mendukung konstanta global berikut:
+ `NaN`
+ `Infinity`
+ `undefined`

## Modul bawaan
<a name="writing-functions-javascript-features-builtin-modules"></a>

Mendukung modul bawaan berikut.

**Topics**
+ [

### Kripto (hash dan HMAC)
](#writing-functions-javascript-features-builtin-modules-crypto)
+ [

### String kueri
](#writing-functions-javascript-features-builtin-modules-query-string)

### Kripto (hash dan HMAC)
<a name="writing-functions-javascript-features-builtin-modules-crypto"></a>

Modul kriptografi (`crypto`) menyediakan hashing standar dan pembantu kode autentikasi pesan berbasis hash (HMAC). Anda dapat memuat modul menggunakan `require('crypto')`. Modul ini menyediakan metode berikut yang berperilaku persis seperti rekan-rekan Node.js mereka.

**Metode hashing**

`crypto.createHash(algorithm)`  
Menciptakan dan mengembalikan objek hash yang dapat digunakan untuk menghasilkan hash digests menggunakan algoritme yang diberikan: `md5`, `sha1`, atau `sha256`.

`hash.update(data)`  
Update konten hash dengan `data` yang tersedia.

`hash.digest([encoding])`  
Menghitung digest dari semua data yang diteruskan menggunakan `hash.update()`. Pengkodean dapat berupa `hex`, `base64`, atau `base64url`.

**Metode HMAC**

`crypto.createHmac(algorithm, secret key)`  
Menciptakan dan mengembalikan objek HMAC yang menggunakan `algorithm` dan `secret key` yang tersedia. Algoritma dapat berupa `md5`, `sha1`, atau `sha256`.

`hmac.update(data)`  
Memperbarui konten HMAC dengan `data` yang tersedia.

`hmac.digest([encoding])`  
Menghitung digest dari semua data yang diteruskan menggunakan `hmac.update()`. Pengkodean dapat berupa `hex`, `base64`, atau `base64url`.

### String kueri
<a name="writing-functions-javascript-features-builtin-modules-query-string"></a>

**catatan**  
[Objek acara CloudFront Functions](functions-event-structure.md) secara otomatis mem-parsing string kueri URL untuk Anda. Itu berarti bahwa dalam kebanyakan kasus Anda tidak perlu menggunakan modul ini.

Modul string kueri (`querystring`) menyediakan metode untuk mengurai dan memformat string kueri URL. Anda dapat memuat modul menggunakan `require('querystring')`. Modul ini menyediakan metode berikut.

`querystring.escape(string)`  
Mengkodekan URL `string` yang tersedia, mengembalikan string kueri yang lolos. Metode ini digunakan oleh `querystring.stringify()` dan tidak boleh digunakan secara langsung.

`querystring.parse(string[, separator[, equal[, options]]])`  
Mengurai string kueri (`string`) dan mengembalikan objek.  
Parameter `separator` adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah `&`.  
Parameter `equal` adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah `=`.  
Parameter `options` adalah objek dengan kunci berikut:    
`decodeURIComponent function`  
Sebuah fungsi untuk memecahkan kode karakter persentase dikodekan dalam string kueri. Secara default, itu adalah `querystring.unescape()`.  
`maxKeys number`  
Jumlah kunci maksimum untuk diurai Secara default, itu adalah `1000`. Gunakan nilai `0` untuk menghapus pembatasan untuk menghitung kunci.
Secara default, karakter persentase dikodekan dalam string kueri diasumsikan menggunakan pengkodean UTF-8. Urutan UTF-8 tidak valid diganti dengan karakter pengganti `U+FFFD`.  
Misalnya, untuk string kueri berikut:  

```
'name=value&abc=xyz&abc=123'
```
Nilai `querystring.parse()` yang dikembalikan adalah:  

```
{
name: 'value',
abc: ['xyz', '123']
}
```
`querystring.decode()` adalah alias untuk `querystring.parse()`.

`querystring.stringify(object[, separator[, equal[, options]]])`  
Menyerialisasi `object` dan mengembalikan string kueri.  
Parameter `separator` adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah `&`.  
Parameter `equal` adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah `=`.  
Parameter `options` adalah objek dengan kunci berikut:    
`encodeURIComponent function`  
Fungsi yang digunakan untuk mengonversi karakter URL yang tidak aman untuk pengkodean persentase dalam string kueri. Secara default, itu adalah `querystring.escape()`.
Secara default, karakter yang memerlukan pengkodean persentase dalam string kueri dikodekan sebagai UTF-8. Untuk menggunakan pengkodean yang berbeda, tentukan opsi `encodeURIComponent`.  
Misalnya, gunakan kode berikut:  

```
querystring.stringify({ name: 'value', abc: ['xyz', '123'], anotherName: '' });
```
Nilai yang dikembalikan adalah:  

```
'name=value&abc=xyz&abc=123&anotherName='
```
`querystring.encode()` adalah alias untuk `querystring.stringify()`.

`querystring.unescape(string)`  
Mendekode karakter yang dikodekan persentase URL dalam `string` yang tersedia, mengembalikan string kueri yang tidak lolos. Metode ini digunakan oleh `querystring.parse()` dan tidak boleh digunakan secara langsung.

## Fitur yang dibatasi
<a name="writing-functions-javascript-features-restricted-features"></a>

Fitur JavaScript bahasa berikut tidak didukung atau dibatasi karena masalah keamanan.

**Evaluasi kode dinamis**  
Evaluasi kode dinamis tidak didukung. Konstruktor `eval()` dan `Function` mengalami kesalahan jika dicoba. Misalnya, `const sum = new Function('a', 'b', 'return a + b')` mengalami kesalahan.

**Timer**  
Fungsi `setTimeout()`, `setImmediate()`, dan `clearTimeout()` tidak didukung. Tidak ada ketentuan untuk menunda atau menghasilkan dalam fungsi jalankan. Fungsi Anda harus dijalankan secara serentak sampai selesai.

**Tanggal dan stempel waktu**  
Untuk alasan keamanan, tidak ada akses ke timer beresolusi tinggi. Semua metode `Date` untuk meminta waktu saat ini selalu mengembalikan nilai yang sama saat menjalankan fungsi tunggal. Stempel waktu yang dikembalikan adalah waktu fungsi mulai berjalan. Akibatnya, Anda tidak dapat mengukur waktu berlalu dalam fungsi Anda.

**Akses sistem file**  
Tidak ada akses sistem file. Misalnya, tidak ada modul `fs` untuk akses sistem file seperti yang ada di Node.js.

**Akses proses**  
Tidak ada akses proses. Misalnya, tidak ada objek `process` global untuk memproses akses informasi seperti yang ada di Node.js.

**Variabel-variabel lingkungan**  
Tidak ada akses ke variabel lingkungan.   
Sebagai gantinya, Anda dapat menggunakan CloudFront KeyValueStore untuk membuat datastore terpusat dari pasangan kunci-nilai untuk Fungsi Anda. CloudFront CloudFront KeyValueStore memungkinkan pembaruan dinamis ke data konfigurasi Anda tanpa perlu menerapkan perubahan kode. Anda harus menggunakan [JavaScript runtime 2.0](functions-javascript-runtime-20.md) untuk menggunakannya CloudFront KeyValueStore. Untuk informasi selengkapnya, lihat [Amazon CloudFront KeyValueStore](kvs-with-functions.md).

**Akses jaringan**  
Tidak ada dukungan untuk panggilan jaringan. Misalnya, XHR, HTTP (S), dan soket tidak didukung.

# JavaScript fitur runtime 2.0 untuk Fungsi CloudFront
<a name="functions-javascript-runtime-20"></a>

Lingkungan JavaScript runtime CloudFront Functions sesuai dengan [ECMAScript (ES) versi 5.1](https://262.ecma-international.org/5.1/) dan juga mendukung beberapa fitur ES versi 6 hingga 12. Lingkungan ini juga menyediakan beberapa metode standar yang bukan bagian dari spesifikasi ES. Topik berikut mencantumkan semua fitur yang didukung dalam runtime ini.

**Topics**
+ [

## Fitur inti
](#writing-functions-javascript-features-core-20)
+ [

## Objek primitif
](#writing-functions-javascript-features-primitive-objects-20)
+ [

## Objek bawaan
](#writing-functions-javascript-features-builtin-objects-20)
+ [

## Jenis kesalahan
](#writing-functions-javascript-features-error-types-20)
+ [

## Global
](#writing-functions-javascript-features-globals-20)
+ [

## Modul bawaan
](#writing-functions-javascript-features-builtin-modules-20)
+ [

## Fitur yang dibatasi
](#writing-functions-javascript-features-restricted-features-20)

## Fitur inti
<a name="writing-functions-javascript-features-core-20"></a>

Mendukung fitur inti ES berikut.

**Jenis**  
Mendukung semua jenis ES 5.1. Ini termasuk nilai boolean, angka, string, objek, array, fungsi, dan ekspresi reguler.

**Operator**  
Mendukung Semua operator ES 5.1 didukung.  
Mendukung operator eksponensial ES 7 (`**`).

**Pernyataan**  
Mendukung pernyataan ES 5.1 berikut:  
+ `break`
+ `catch`
+ `continue`
+ `do-while`
+ `else`
+ `finally`
+ `for`
+ `for-in`
+ `if`
+ `label`
+ `return`
+ `switch`
+ `throw`
+ `try`
+ `var`
+ `while`
Pernyataan ES 6 berikut didukung:  
+ `const`
+ `let`
Pernyataan ES 8 berikut didukung:  
+ `async`
+ `await`
`async`,`await`,`const`, dan `let` didukung dalam JavaScript runtime 2.0.  
`await`hanya dapat digunakan di dalam `async` fungsi. `async`argumen dan penutupan tidak didukung.

**Literal**  
Literal template ES 6 didukung: string multiline, interpolasi ekspresi, dan templat bersarang.

**Fungsi**  
Mendukung semua fitur fungsi ES 5.1.  
Mendukung fungsi panah ES 6 didukung, dan sintaks parameter ES 6 sintaks parameter istirahat.

**Unicode**  
Sumber teks dan literal string dapat berisi karakter Unicode yang dikodekan. Juga mendukung unicode code point escape sequence enam karakter (misalnya, `\uXXXX`).

**Mode ketat**  
Fungsi beroperasi dalam mode ketat secara default, sehingga Anda tidak perlu menambahkan pernyataan `use strict` dalam kode fungsi Anda. Ini tidak dapat diubah.

## Objek primitif
<a name="writing-functions-javascript-features-primitive-objects-20"></a>

Mendukung objek primitif ES berikut.

**Objek**  
Mendukung metode ES 5.1 berikut pada objek:  
+ `Object.create()` (tanpa daftar properti)
+ `Object.defineProperties()`
+ `Object.defineProperty()`
+ `Object.freeze()`
+ `Object.getOwnPropertyDescriptor()`
+ `Object.getOwnPropertyDescriptors()`
+ `Object.getOwnPropertyNames()`
+ `Object.getPrototypeOf()`
+ `Object.isExtensible()`
+ `Object.isFrozen()`
+ `Object.isSealed()`
+ `Object.keys()`
+ `Object.preventExtensions()`
+ `Object.seal()`
Mendukung metode ES 6 berikut pada objek:  
+ `Object.assign()`
Mendukung metode ES 8 berikut pada objek:  
+ `Object.entries()`
+ `Object.values()`
Metode prototipe ES 5.1 berikut pada objek didukung:  
+ `Object.prototype.hasOwnProperty()`
+ `Object.prototype.isPrototypeOf()`
+ `Object.prototype.propertyIsEnumerable()`
+ `Object.prototype.toString()`
+ `Object.prototype.valueOf()`
Metode prototipe ES 6 berikut pada objek didukung:  
+ `Object.prototype.is()`
+ `Object.prototype.setPrototypeOf()`

**String**  
Mendukung metode ES 5.1 berikut pada string:  
+ `String.fromCharCode()`
Mendukung metode ES 6 berikut pada string:  
+ `String.fromCodePoint()`
Metode prototipe ES 5.1 berikut pada string didukung:  
+ `String.prototype.charAt()`
+ `String.prototype.concat()`
+ `String.prototype.indexOf()`
+ `String.prototype.lastIndexOf()`
+ `String.prototype.match()`
+ `String.prototype.replace()`
+ `String.prototype.search()`
+ `String.prototype.slice()`
+ `String.prototype.split()`
+ `String.prototype.substr()`
+ `String.prototype.substring()`
+ `String.prototype.toLowerCase()`
+ `String.prototype.trim()`
+ `String.prototype.toUpperCase()`
Metode prototipe ES 6 berikut pada string didukung:  
+ `String.prototype.codePointAt()`
+ `String.prototype.endsWith()`
+ `String.prototype.includes()`
+ `String.prototype.repeat()`
+ `String.prototype.startsWith()`
Metode prototipe ES 8 berikut pada string didukung:  
+ `String.prototype.padStart()`
+ `String.prototype.padEnd()`
Metode prototipe ES 9 berikut pada string didukung:  
+ `String.prototype.trimStart()`
+ `String.prototype.trimEnd()`
Metode prototipe ES 12 berikut pada string didukung:  
+ `String.prototype.replaceAll()`
**catatan**  
`String.prototype.replaceAll()`baru di JavaScript runtime 2.0.

**Bilangan**  
SEMUA nomor ES 5 didukung.  
Properti ES 6 berikut pada angka didukung:  
+ `Number.EPSILON`
+ `Number.MAX_SAFE_INTEGER`
+ `Number.MIN_SAFE_INTEGER`
+ `Number.MAX_VALUE`
+ `Number.MIN_VALUE`
+ `Number.NaN`
+ `Number.NEGATIVE_INFINITY`
+ `Number.POSITIVE_INFINITY`
Mendukung metode ES 6 berikut pada nomor:  
+ `Number.isFinite()`
+ `Number.isInteger()`
+ `Number.isNaN()`
+ `Number.isSafeInteger()`
+ `Number.parseInt()`
+ `Number.parseFloat()`
Metode prototipe ES 5.1 berikut pada angka didukung:  
+ `Number.prototype.toExponential()`
+ `Number.prototype.toFixed()`
+ `Number.prototype.toPrecision()`
Pemisah numerik ES 12 didukung.  
Pemisah numerik ES 12 baru di JavaScript runtime 2.0.

## Objek bawaan
<a name="writing-functions-javascript-features-builtin-objects-20"></a>

Mendukung objek ES bawaan berikut.

**Matematika**  
Mendukung semua metode matematika ES 5.1.  
Di lingkungan runtime CloudFront Functions, `Math.random()` implementasi menggunakan `arc4random` OpenBSD yang diunggulkan dengan stempel waktu saat fungsi berjalan.
Properti matematika ES 6 berikut didukung:  
+ `Math.E`
+ `Math.LN10`
+ `Math.LN2`
+ `Math.LOG10E`
+ `Math.LOG2E`
+ `Math.PI`
+ `Math.SQRT1_2`
+ `Math.SQRT2`
Mendukung metode matematika ES 6 berikut:  
+ `Math.abs()`
+ `Math.acos()`
+ `Math.acosh()`
+ `Math.asin()`
+ `Math.asinh()`
+ `Math.atan()`
+ `Math.atan2()`
+ `Math.atanh()`
+ `Math.cbrt()`
+ `Math.ceil()`
+ `Math.clz32()`
+ `Math.cos()`
+ `Math.cosh()`
+ `Math.exp()`
+ `Math.expm1()`
+ `Math.floor()`
+ `Math.fround()`
+ `Math.hypot()`
+ `Math.imul()`
+ `Math.log()`
+ `Math.log1p()`
+ `Math.log2()`
+ `Math.log10()`
+ `Math.max()`
+ `Math.min()`
+ `Math.pow()`
+ `Math.random()`
+ `Math.round()`
+ `Math.sign()`
+ `Math.sinh()`
+ `Math.sin()`
+ `Math.sqrt()`
+ `Math.tan()`
+ `Math.tanh()`
+ `Math.trunc()`

**Tanggal**  
Mendukung semua fitur ES 5.1 `Date`.  
Untuk alasan keamanan, `Date` selalu mengembalikan nilai yang sama—waktu mulai fungsi ini—saat menjalankan fungsi tunggal. Untuk informasi selengkapnya, lihat [Fitur yang dibatasi](functions-javascript-runtime-10.md#writing-functions-javascript-features-restricted-features).

**Fungsi**  
Metode prototipe ES 5.1 berikut didukung:  
+ `Function.prototype.apply()`
+ `Function.prototype.bind()`
+ `Function.prototype.call()`
Tidak mendukung konstruktor fungsi.

**Ekspresi reguler**  
Mendukung semua fitur ekspresi reguler ES 5.1. Bahasa ekspresi reguler adalah kompatibel dengan Perl.  
Properti pengakses prototipe ES 5.1 berikut didukung:  
+ `RegExp.prototype.global`
+ `RegExp.prototype.ignoreCase`
+ `RegExp.protoype.multiline`
+ `RegExp.protoype.source`
+ `RegExp.prototype.sticky`
+ `RegExp.prototype.flags`
**catatan**  
`RegExp.prototype.sticky`dan `RegExp.prototype.flags` baru di JavaScript runtime 2.0.
Metode prototipe ES 5.1 berikut didukung:  
+ `RegExp.prototype.exec()`
+ `RegExp.prototype.test()`
+ `RegExp.prototype.toString()`
+ `RegExp.prototype[@@replace]()`
+ `RegExp.prototype[@@split]()`
**catatan**  
`RegExp.prototype[@@split]()`baru di JavaScript runtime 2.0.
Properti instans ES 5.1 berikut didukung:  
+ `lastIndex`
Mendukung kelompok penangkap bernama ES 9.

**JSON**  
Metode ES 5.1 berikut didukung:  
+ `JSON.parse()`
+ `JSON.stringify()`

**Array**  
Mendukung metode ES 5.1 berikut pada susunan:  
+ `Array.isArray()`
Mendukung metode ES 6 berikut pada susunan:  
+ `Array.of()`
Metode prototipe ES 5.1 berikut didukung:  
+ `Array.prototype.concat()`
+ `Array.prototype.every()`
+ `Array.prototype.filter()`
+ `Array.prototype.forEach()`
+ `Array.prototype.indexOf()`
+ `Array.prototype.join()`
+ `Array.prototype.lastIndexOf()`
+ `Array.prototype.map()`
+ `Array.prototype.pop()`
+ `Array.prototype.push()`
+ `Array.prototype.reduce()`
+ `Array.prototype.reduceRight()`
+ `Array.prototype.reverse()`
+ `Array.prototype.shift()`
+ `Array.prototype.slice()`
+ `Array.prototype.some()`
+ `Array.prototype.sort()`
+ `Array.prototype.splice()`
+ `Array.prototype.unshift()`
Metode prototipe ES 6 berikut didukung  
+ `Array.prototype.copyWithin()`
+ `Array.prototype.fill()`
+ `Array.prototype.find()`
+ `Array.prototype.findIndex()`
Metode prototipe ES 7 berikut didukung:  
+ `Array.prototype.includes()`

**Susunan yang dijeniskan**  
Konstruktor array yang diketik ES 6 berikut didukung:  
+ `Float32Array`
+ `Float64Array`
+ `Int8Array`
+ `Int16Array`
+ `Int32Array`
+ `Uint8Array`
+ `Uint8ClampedArray`
+ `Uint16Array`
+ `Uint32Array`
Metode ES 6 berikut didukung:  
+ `TypedArray.from()`
+ `TypedArray.of()`
**catatan**  
`TypedArray.from()`dan `TypedArray.of()` baru di JavaScript runtime 2.0.
Metode prototipe ES 6 berikut didukung:  
+ `TypedArray.prototype.copyWithin()`
+ `TypedArray.prototype.every()`
+ `TypedArray.prototype.fill()`
+ `TypedArray.prototype.filter()`
+ `TypedArray.prototype.find()`
+ `TypedArray.prototype.findIndex()`
+ `TypedArray.prototype.forEach()`
+ `TypedArray.prototype.includes()`
+ `TypedArray.prototype.indexOf()`
+ `TypedArray.prototype.join()`
+ `TypedArray.prototype.lastIndexOf()`
+ `TypedArray.prototype.map()`
+ `TypedArray.prototype.reduce()`
+ `TypedArray.prototype.reduceRight()`
+ `TypedArray.prototype.reverse()`
+ `TypedArray.prototype.some()`
+ `TypedArray.prototype.set()`
+ `TypedArray.prototype.slice()`
+ `TypedArray.prototype.sort()`
+ `TypedArray.prototype.subarray()`
+ `TypedArray.prototype.toString()`
**catatan**  
`TypedArray.prototype.every()`,`TypedArray.prototype.fill()`,`TypedArray.prototype.filter()`,`TypedArray.prototype.find()`,`TypedArray.prototype.findIndex()`,,`TypedArray.prototype.forEach()`,`TypedArray.prototype.includes()`,`TypedArray.prototype.indexOf()`,`TypedArray.prototype.join()`,`TypedArray.prototype.lastIndexOf()`,`TypedArray.prototype.map()`,`TypedArray.prototype.reduce()`,`TypedArray.prototype.reduceRight()`,`TypedArray.prototype.reverse()`,, dan `TypedArray.prototype.some()` baru di JavaScript runtime 2.0.

**ArrayBuffer**  
Metode ES 6 berikut ArrayBuffer didukung:  
+ `isView()`
Metode prototipe ES 6 berikut ArrayBuffer didukung:  
+ `ArrayBuffer.prototype.slice()`

**Janji**  
Metode ES 6 berikut pada janji didukung:  
+ `Promise.all()`
+ `Promise.allSettled()`
+ `Promise.any()`
+ `Promise.reject()`
+ `Promise.resolve()`
+ `Promise.race()`
**catatan**  
`Promise.all()`,`Promise.allSettled()`,`Promise.any()`, dan `Promise.race()` baru di JavaScript runtime 2.0.
Metode prototipe ES 6 berikut pada janji didukung:  
+ `Promise.prototype.catch()`
+ `Promise.prototype.finally()`
+ `Promise.prototype.then()`

**DataView**  
Metode prototipe ES 6 berikut didukung:  
+ `DataView.prototype.getFloat32()`
+ `DataView.prototype.getFloat64()`
+ `DataView.prototype.getInt16()`
+ `DataView.prototype.getInt32()`
+ `DataView.prototype.getInt8()`
+ `DataView.prototype.getUint16()`
+ `DataView.prototype.getUint32()`
+ `DataView.prototype.getUint8()`
+ `DataView.prototype.setFloat32()`
+ `DataView.prototype.setFloat64()`
+ `DataView.prototype.setInt16()`
+ `DataView.prototype.setInt32()`
+ `DataView.prototype.setInt8()`
+ `DataView.prototype.setUint16()`
+ `DataView.prototype.setUint32()`
+ `DataView.prototype.setUint8()`
**catatan**  
Semua metode prototipe Dataview ES 6 baru di JavaScript runtime 2.0.

**Simbol**  
Metode ES 6 berikut didukung:  
+ `Symbol.for()`
+ `Symbol.keyfor()`
**catatan**  
Semua metode Symbol ES 6 baru di JavaScript runtime 2.0.

**Teks Decoder**  
Metode prototipe berikut didukung:  
+ `TextDecoder.prototype.decode()`
Properti pengakses prototipe berikut didukung:  
+ `TextDecoder.prototype.encoding`
+ `TextDecoder.prototype.fatal`
+ `TextDecoder.prototype.ignoreBOM`

**Encoder Teks**  
Metode prototipe berikut didukung:  
+ `TextEncoder.prototype.encode()`
+ `TextEncoder.prototype.encodeInto()`

**Konsol**  
Ini adalah objek pembantu untuk debugging. Ini hanya mendukung metode `log()`, untuk merekam pesan log.  
CloudFront Fungsi tidak mendukung sintaks koma, seperti. `console.log('a', 'b')` Sebagai gantinya, gunakan `console.log('a' + ' ' + 'b')` formatnya.

## Jenis kesalahan
<a name="writing-functions-javascript-features-error-types-20"></a>

Mendukung objek kesalahan berikut:
+ `Error`
+ `EvalError`
+ `InternalError`
+ `RangeError`
+ `ReferenceError`
+ `SyntaxError`
+ `TypeError`
+ `URIError`

## Global
<a name="writing-functions-javascript-features-globals-20"></a>

Mendukung objek `globalThis`.

Mendukung fungsi global ES 5.1 berikut:
+ `decodeURI()`
+ `decodeURIComponent()`
+ `encodeURI()`
+ `encodeURIComponent()`
+ `isFinite()`
+ `isNaN()`
+ `parseFloat()`
+ `parseInt()`

Fungsi global ES 6 berikut didukung:
+ `atob()`
+ `btoa()`
**catatan**  
`atob()`dan `btoa()` baru di JavaScript runtime 2.0.

Mendukung konstanta global berikut:
+ `NaN`
+ `Infinity`
+ `undefined`
+ `arguments`

## Modul bawaan
<a name="writing-functions-javascript-features-builtin-modules-20"></a>

Mendukung modul bawaan berikut.

**Topics**
+ [

### Penyangga
](#writing-functions-javascript-features-builtin-modules-buffer-20)
+ [

### String kueri
](#writing-functions-javascript-features-builtin-modules-query-string-20)
+ [

### Kripto
](#writing-functions-javascript-features-builtin-modules-crypto-20)

### Penyangga
<a name="writing-functions-javascript-features-builtin-modules-buffer-20"></a>

Modul ini menyediakan metode berikut:
+ `Buffer.alloc(size[, fill[, encoding]])`

  Alokasikan a. `Buffer`
  + `size`: Ukuran penyangga. Masukkan bilangan bulat.
  + `fill`: Opsional. Masukkan string,`Buffer`, Uint8Array, atau integer. Default-nya adalah `0`. 
  + `encoding`: Opsional. `fill`Kapan string, masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.allocUnsafe(size)`

  Alokasikan `Buffer` non-inisialisasi.
  + `size`: Masukkan bilangan bulat.
+ `Buffer.byteLength(value[, encoding])`

  Kembalikan panjang nilai, dalam byte.
  + `value`: Sebuah string,,`Buffer`, Dataview TypedArray, atau Arraybuffer.
  + `encoding`: Opsional. `value`Kapan string, masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.compare(buffer1, buffer2)`

  Bandingkan dua `Buffer` s untuk membantu mengurutkan array. Mengembalikan `0` jika mereka sama, `-1` jika `buffer1` datang lebih dulu, atau `1` jika `buffer2` datang lebih dulu.
  + `buffer1`: Masukkan a`Buffer`.
  + `buffer2`: Masukkan yang berbeda`Buffer`.
+ `Buffer.concat(list[, totalLength])`

  Gandungkan beberapa s. `Buffer` Kembali `0` jika tidak ada. Kembali hingga`totalLength`.
  + `list`: Masukkan daftar `Buffer` s. Perhatikan ini akan dipotong menjadi. `totalLength`
  + `totalLength`: Opsional. Masukkan bilangan bulat yang tidak ditandatangani. Gunakan jumlah `Buffer` instance dalam daftar jika kosong.
+ `Buffer.from(array)`

  Buat `Buffer` dari array.
  + `array`: Masukkan array byte dari `0` ke`255`. 
+ `Buffer.from(arrayBuffer, byteOffset[, length]))`

  Buat tampilan dari`arrayBuffer`, mulai dari offset `byteOffset` dengan panjang`length`.
  + `arrayBuffer`: Masukkan `Buffer` array.
  + `byteOffset`: Masukkan bilangan bulat.
  + `length`: Opsional. Masukkan bilangan bulat.
+ `Buffer.from(buffer)`

  Buat salinan dari`Buffer`.
  + `buffer`: Masukkan a`Buffer`.
+ `Buffer.from(object[, offsetOrEncoding[, length]])`

  Buat `Buffer` dari objek. Mengembalikan `Buffer.from(object.valueOf(), offsetOrEncoding, length)` jika `valueOf()` tidak sama dengan objek.
  + `object`: Masukkan objek.
  + `offsetOrEncoding`: Opsional. Masukkan integer atau string encoding.
  + `length`: Opsional. Masukkan bilangan bulat.
+ `Buffer.from(string[, encoding])`

  Buat `Buffer` dari string.
  + `string`: Masukkan string.
  + `encoding`: Opsional. Masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.isBuffer(object)`

  Periksa apakah `object` itu Buffer. Pengembalian `true` atau`false`.
  + `object`: Masukkan objek.
+ `Buffer.isEncoding(encoding)`

  Periksa `encoding` apakah didukung. Pengembalian `true` atau`false`.
  + `encoding`: Opsional. Masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.

Modul ini menyediakan metode prototipe buffer berikut:
+ `Buffer.prototype.compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]])`

  Bandingkan `Buffer` dengan target. Mengembalikan `0` jika mereka sama, `1` jika `buffer` datang lebih dulu, atau `-1` jika `target` datang lebih dulu.
  + `target`: Masukkan a`Buffer`.
  + `targetStart`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `targetEnd`: Opsional. Masukkan bilangan bulat. Default adalah `target` panjang.
  + `sourceStart`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `sourceEnd`: Opsional. Masukkan bilangan bulat. Default adalah `Buffer` panjang.
+ `Buffer.prototype.copy(target[, targetStart[, sourceStart[, sourceEnd]]])`

  Salin buffer ke`target`.
  + `target`: Masukkan a `Buffer` atau`Uint8Array`.
  + `targetStart`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `sourceStart`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `sourceEnd`: Opsional. Masukkan bilangan bulat. Default adalah `Buffer` panjang.
+ `Buffer.prototype.equals(otherBuffer)`

  Bandingkan `Buffer` dengan`otherBuffer`. Pengembalian `true` atau`false`.
  + `otherBuffer`: Masukkan string.
+ `Buffer.prototype.fill(value[, offset[, end][, encoding])`

  Isi `Buffer` dengan`value`.
  + `value`: Masukkan string,`Buffer`, atau bilangan bulat.
  + `offset`: Opsional. Masukkan bilangan bulat.
  + `end`: Opsional. Masukkan bilangan bulat.
  + `encoding`: Opsional. Masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.prototype.includes(value[, byteOffset][, encoding])`

  Cari `value` di`Buffer`. Pengembalian `true` atau`false`.
  + `value`: Masukkan string,, `Buffer``Uint8Array`, atau bilangan bulat.
  + `byteOffset`: Opsional. Masukkan bilangan bulat.
  + `encoding`: Opsional. Masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.prototype.indexOf(value[, byteOffset][, encoding])`

  Cari yang pertama `value` di`Buffer`. Mengembalikan `index` jika ditemukan; kembali `-1` jika tidak ditemukan.
  + `value`: Masukkan string,`Buffer`, Unit8Array, atau bilangan bulat dari 0 hingga 255. 
  + `byteOffset`: Opsional. Masukkan bilangan bulat.
  + `encoding`: Opsional. Masukkan salah satu dari berikut jika `value` adalah string:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.prototype.lastIndexOf(value[, byteOffset][, encoding])`

  Cari yang terakhir `value` di`Buffer`. Mengembalikan `index` jika ditemukan; kembali `-1` jika tidak ditemukan.
  + `value`: Masukkan string,`Buffer`, Unit8Array, atau bilangan bulat dari 0 hingga 255. 
  + `byteOffset`: Opsional. Masukkan bilangan bulat.
  + `encoding`: Opsional. Masukkan salah satu dari berikut jika `value` adalah string:`utf8`,`hex`,`base64`,`base64url`. Default-nya adalah `utf8`.
+ `Buffer.prototype.readInt8(offset)`

  Baca `Int8` di `offset` dari`Buffer`.
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readIntBE(offset, byteLength)`

  Baca `Int` sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Opsional. Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.readInt16BE(offset)`

  Baca `Int16` sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readInt32BE(offset)`

  Baca `Int32` sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readIntLE(offset, byteLength)`

  Baca `Int` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.readInt16LE(offset)`

  Baca `Int16` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readInt32LE(offset)`

  Baca `Int32` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readUInt8(offset)`

  Baca `UInt8` di `offset` dari`Buffer`.
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readUIntBE(offset, byteLength)`

  Baca `UInt` sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.readUInt16BE(offset)`

  Baca `UInt16` sebagai big-endian di from. `offset` `Buffer`
+ 
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readUInt32BE(offset)`

  Baca `UInt32` sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readUIntLE(offset, byteLength)`

  Baca `UInt` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.readUInt16LE(offset)`

  Baca `UInt16` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readUInt32LE(offset)`

  Baca `UInt32` sebagai endian kecil di dari. `offset` `Buffer`
  + `offset`: Masukkan bilangan bulat.
+ `Buffer.prototype.readDoubleBE([offset])`

  Baca 64-bit ganda sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Opsional. Masukkan bilangan bulat.
+ `Buffer.prototype.readDoubleLE([offset])`

  Baca 64-bit ganda sebagai endian kecil di from. `offset` `Buffer`
  + `offset`: Opsional. Masukkan bilangan bulat.
+ `Buffer.prototype.readFloatBE([offset])`

  Baca float 32-bit sebagai big-endian di from. `offset` `Buffer`
  + `offset`: Opsional. Masukkan bilangan bulat.
+ `Buffer.prototype.readFloatLE([offset])`

  Baca float 32-bit sebagai endian kecil di from. `offset` `Buffer`
  + `offset`: Opsional. Masukkan bilangan bulat.
+ `Buffer.prototype.subarray([start[, end]])`

  Mengembalikan salinan `Buffer` yang diimbangi dan dipotong dengan yang baru `start` dan. `end`
  + `start`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `end`: Opsional. Masukkan bilangan bulat. Default adalah panjang buffer.
+ `Buffer.prototype.swap16()`

  Tukar urutan byte `Buffer` array, memperlakukannya sebagai array angka 16-bit. `Buffer`panjangnya harus habis dibagi 2, atau Anda akan menerima kesalahan.
+ `Buffer.prototype.swap32()`

  Tukar urutan byte `Buffer` array, memperlakukannya sebagai array angka 32-bit. `Buffer`panjangnya harus habis dibagi 4, atau Anda akan menerima kesalahan.
+ `Buffer.prototype.swap64()`

  Tukar urutan byte `Buffer` array, memperlakukannya sebagai array angka 64-bit. `Buffer`panjangnya harus habis dibagi 8, atau Anda akan menerima kesalahan.
+ `Buffer.prototype.toJSON()`

  Kembali `Buffer` sebagai JSON. 
+ `Buffer.prototype.toString([encoding[, start[, end]]])`

  Konversi`Buffer`, dari `start` ke`end`, ke string yang dikodekan.
  + `encoding`: Opsional. Masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`, atau`base64url`. Default-nya adalah `utf8`.
  + `start`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `end`: Opsional. Masukkan bilangan bulat. Default adalah panjang buffer.
+ `Buffer.prototype.write(string[, offset[, length]][, encoding])`

  Tulis dikodekan `string` ke `Buffer` jika ada spasi, atau terpotong `string` jika tidak ada cukup ruang.
  + `string`: Masukkan string.
  + `offset`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
  + `length`: Opsional. Masukkan bilangan bulat. Default adalah panjang string.
  + `encoding`: Opsional. Secara opsional masukkan salah satu dari berikut ini:`utf8`,`hex`,`base64`, atau`base64url`. Default-nya adalah `utf8`.
+ `Buffer.prototype.writeInt8(value, offset, byteLength)`

  Menulis `Int8` `value` dari `byteLength` at `offset` ke`Buffer`.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeIntBE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeInt16BE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeInt32BE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeIntLE(offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeInt16LE(offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeInt32LE(offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `offset`: Masukkan bilangan bulat.
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUInt8(value, offset, byteLength)`

  Menulis `UInt8` `value` dari `byteLength` at `offset` ke`Buffer`.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUIntBE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUInt16BE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUInt32BE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUIntLE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUInt16LE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeUInt32LE(value, offset, byteLength)`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Masukkan bilangan bulat
  + `byteLength`: Masukkan bilangan bulat dari `1` ke`6`.
+ `Buffer.prototype.writeDoubleBE(value, [offset])`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
+ `Buffer.prototype.writeDoubleLE(value, [offset])`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
+ `Buffer.prototype.writeFloatBE(value, [offset])`

  Menulis `value` di `offset` ke`Buffer`, menggunakan big-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.
+ `Buffer.prototype.writeFloatLE(value, [offset])`

  Menulis `value` di `offset` ke`Buffer`, menggunakan little-endian.
  + `value`: Masukkan bilangan bulat.
  + `offset`: Opsional. Masukkan bilangan bulat. Default-nya adalah 0.

Metode contoh berikut didukung:
+ `buffer[index]`

  Dapatkan dan atur oktet (byte) di `index` dalam. `Buffer` 
  + Dapatkan nomor dari `0` ke`255`. Atau tetapkan angka dari dari `0` ke`255`.

Properti contoh berikut didukung:
+ `buffer`

  Dapatkan `ArrayBuffer` objek untuk buffer. 
+ `byteOffset`

  Dapatkan `Arraybuffer` objek buffer. `byteOffset`
+ `length`

  Dapatkan jumlah byte buffer.

**catatan**  
Semua metode modul Buffer baru di JavaScript runtime 2.0.

### String kueri
<a name="writing-functions-javascript-features-builtin-modules-query-string-20"></a>

**catatan**  
[Objek acara CloudFront Functions](functions-event-structure.md) secara otomatis mem-parsing string kueri URL untuk Anda. Itu berarti bahwa dalam kebanyakan kasus Anda tidak perlu menggunakan modul ini.

Modul string kueri (`querystring`) menyediakan metode untuk mengurai dan memformat string kueri URL. Anda dapat memuat modul menggunakan `require('querystring')`. Modul ini menyediakan metode berikut.

`querystring.escape(string)`  
Mengkodekan URL `string` yang tersedia, mengembalikan string kueri yang lolos. Metode ini digunakan oleh `querystring.stringify()` dan tidak boleh digunakan secara langsung.

`querystring.parse(string[, separator[, equal[, options]]])`  
Mengurai string kueri (`string`) dan mengembalikan objek.  
Parameter `separator` adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah `&`.  
Parameter `equal` adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah `=`.  
Parameter `options` adalah objek dengan kunci berikut:    
`decodeURIComponent function`  
Sebuah fungsi untuk memecahkan kode karakter persentase dikodekan dalam string kueri. Secara default, itu adalah `querystring.unescape()`.  
`maxKeys number`  
Jumlah kunci maksimum untuk diurai Secara default, itu adalah `1000`. Gunakan nilai `0` untuk menghapus pembatasan untuk menghitung kunci.
Secara default, karakter persentase dikodekan dalam string kueri diasumsikan menggunakan pengkodean UTF-8. Urutan UTF-8 tidak valid diganti dengan karakter pengganti `U+FFFD`.  
Misalnya, untuk string kueri berikut:  

```
'name=value&abc=xyz&abc=123'
```
Nilai `querystring.parse()` yang dikembalikan adalah:  

```
{
name: 'value',
abc: ['xyz', '123']
}
```
`querystring.decode()` adalah alias untuk `querystring.parse()`.

`querystring.stringify(object[, separator[, equal[, options]]])`  
Menyerialisasi `object` dan mengembalikan string kueri.  
Parameter `separator` adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah `&`.  
Parameter `equal` adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah `=`.  
Parameter `options` adalah objek dengan kunci berikut:    
`encodeURIComponent function`  
Fungsi yang digunakan untuk mengonversi karakter URL yang tidak aman untuk pengkodean persentase dalam string kueri. Secara default, itu adalah `querystring.escape()`.
Secara default, karakter yang memerlukan pengkodean persentase dalam string kueri dikodekan sebagai UTF-8. Untuk menggunakan pengkodean yang berbeda, tentukan opsi `encodeURIComponent`.  
Misalnya, gunakan kode berikut:  

```
querystring.stringify({ name: 'value', abc: ['xyz', '123'], anotherName: '' });
```
Nilai yang dikembalikan adalah:  

```
'name=value&abc=xyz&abc=123&anotherName='
```
`querystring.encode()` adalah alias untuk `querystring.stringify()`.

`querystring.unescape(string)`  
Mendekode karakter yang dikodekan persentase URL dalam `string` yang tersedia, mengembalikan string kueri yang tidak lolos. Metode ini digunakan oleh `querystring.parse()` dan tidak boleh digunakan secara langsung.

### Kripto
<a name="writing-functions-javascript-features-builtin-modules-crypto-20"></a>

Modul kriptografi (`crypto`) menyediakan hashing standar dan pembantu kode autentikasi pesan berbasis hash (HMAC). Anda dapat memuat modul menggunakan `require('crypto')`.

**Metode hashing**

`crypto.createHash(algorithm)`  
Menciptakan dan mengembalikan objek hash yang dapat digunakan untuk menghasilkan hash digests menggunakan algoritme yang diberikan: `md5`, `sha1`, atau `sha256`.

`hash.update(data)`  
Update konten hash dengan `data` yang tersedia.

`hash.digest([encoding])`  
Menghitung digest dari semua data yang diteruskan menggunakan `hash.update()`. Pengkodean dapat berupa `hex`, `base64`, atau `base64url`.

**Metode HMAC**

`crypto.createHmac(algorithm, secret key)`  
Menciptakan dan mengembalikan objek HMAC yang menggunakan `algorithm` dan `secret key` yang tersedia. Algoritma dapat berupa `md5`, `sha1`, atau `sha256`.

`hmac.update(data)`  
Memperbarui konten HMAC dengan `data` yang tersedia.

`hmac.digest([encoding])`  
Menghitung digest dari semua data yang diteruskan menggunakan `hmac.update()`. Pengkodean dapat berupa `hex`, `base64`, atau `base64url`.

## Fitur yang dibatasi
<a name="writing-functions-javascript-features-restricted-features-20"></a>

Fitur JavaScript bahasa berikut tidak didukung atau dibatasi karena masalah keamanan.

**Evaluasi kode dinamis**  
Evaluasi kode dinamis tidak didukung. Konstruktor `eval()` dan `Function` mengalami kesalahan jika dicoba. Misalnya, `const sum = new Function('a', 'b', 'return a + b')` mengalami kesalahan.

**Timer**  
Fungsi `setTimeout()`, `setImmediate()`, dan `clearTimeout()` tidak didukung. Tidak ada ketentuan untuk menunda atau menghasilkan dalam fungsi jalankan. Fungsi Anda harus dijalankan secara serentak sampai selesai.

**Tanggal dan stempel waktu**  
Untuk alasan keamanan, tidak ada akses ke timer beresolusi tinggi. Semua metode `Date` untuk meminta waktu saat ini selalu mengembalikan nilai yang sama saat menjalankan fungsi tunggal. Stempel waktu yang dikembalikan adalah waktu fungsi mulai berjalan. Akibatnya, Anda tidak dapat mengukur waktu berlalu dalam fungsi Anda.

**Akses sistem file**  
Tidak ada akses sistem file. Misalnya, tidak ada modul `fs` untuk akses sistem file seperti yang ada di Node.js.

**Akses proses**  
Tidak ada akses proses. Misalnya, tidak ada objek `process` global untuk memproses akses informasi seperti yang ada di Node.js.

**Variabel-variabel lingkungan**  
Tidak ada akses ke variabel lingkungan. Sebagai gantinya, Anda dapat menggunakan CloudFront KeyValueStore untuk membuat datastore terpusat dari pasangan kunci-nilai untuk Fungsi Anda. CloudFront CloudFront KeyValueStore memungkinkan pembaruan dinamis ke data konfigurasi Anda tanpa perlu menerapkan perubahan kode. Untuk informasi selengkapnya, lihat [Amazon CloudFront KeyValueStore](kvs-with-functions.md).

**Akses jaringan**  
Tidak ada dukungan untuk panggilan jaringan. Misalnya, XHR, HTTP (S), dan soket tidak didukung.