Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
JavaScript fitur runtime 1.0 untuk Fungsi CloudFront
Lingkungan JavaScript runtime CloudFront Functions sesuai dengan ECMAScript (ES) versi 5.1
Topik berikut mencantumkan semua fitur bahasa yang didukung.
Fitur inti
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
-
catatan
Tidak mendukung pernyataan
constdanlet.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 strictdalam kode fungsi Anda. Ini tidak dapat diubah.
Objek primitif
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, danbase64url. -
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
Mendukung objek ES bawaan berikut.
- Matematika
-
Mendukung semua metode matematika ES 5.1.
catatan
Di lingkungan runtime CloudFront Functions,
Math.random()implementasi menggunakanarc4randomOpenBSD 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.catatan
Untuk alasan keamanan,
Dateselalu mengembalikan nilai yang sama—waktu mulai fungsi ini—saat menjalankan fungsi tunggal. Untuk informasi selengkapnya, lihat Fitur yang dibatasi. - Fungsi
-
Mendukung metode
apply,bind, dancall.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
parsedanstringify. - 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
ArrayBufferberikut:-
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) di bagian modul bawaan.
-
- Konsol
-
Ini adalah objek pembantu untuk debugging. Ini hanya mendukung metode
log(), untuk merekam pesan log.catatan
CloudFront Fungsi tidak mendukung sintaks koma, seperti.
console.log('a', 'b')Sebagai gantinya, gunakanconsole.log('a' + ' ' + 'b')formatnya.
Jenis kesalahan
Mendukung objek kesalahan berikut:
-
Error -
EvalError -
InternalError -
MemoryError -
RangeError -
ReferenceError -
SyntaxError -
TypeError -
URIError
Global
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
Mendukung modul bawaan berikut.
Kripto (hash dan HMAC)
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, atausha256. hash.update(data)-
Update konten hash dengan
datayang tersedia. hash.digest([encoding])-
Menghitung digest dari semua data yang diteruskan menggunakan
hash.update(). Pengkodean dapat berupahex,base64, ataubase64url.
Metode HMAC
crypto.createHmac(algorithm, secret key)-
Menciptakan dan mengembalikan objek HMAC yang menggunakan
algorithmdansecret keyyang tersedia. Algoritma dapat berupamd5,sha1, atausha256. hmac.update(data)-
Memperbarui konten HMAC dengan
datayang tersedia. hmac.digest([encoding])-
Menghitung digest dari semua data yang diteruskan menggunakan
hmac.update(). Pengkodean dapat berupahex,base64, ataubase64url.
String kueri
catatan
Objek acara CloudFront Functions 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
stringyang tersedia, mengembalikan string kueri yang lolos. Metode ini digunakan olehquerystring.stringify()dan tidak boleh digunakan secara langsung. querystring.parse(string[, separator[, equal[, options]]])-
Mengurai string kueri (
string) dan mengembalikan objek.Parameter
separatoradalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah&.Parameter
equaladalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah=.Parameter
optionsadalah 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 nilai0untuk 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 untukquerystring.parse(). querystring.stringify(object[, separator[, equal[, options]]])-
Menyerialisasi
objectdan mengembalikan string kueri.Parameter
separatoradalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah&.Parameter
equaladalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah=.Parameter
optionsadalah 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 untukquerystring.stringify(). querystring.unescape(string)-
Mendekode karakter yang dikodekan persentase URL dalam
stringyang tersedia, mengembalikan string kueri yang tidak lolos. Metode ini digunakan olehquerystring.parse()dan tidak boleh digunakan secara langsung.
Fitur yang dibatasi
Fitur JavaScript bahasa berikut tidak didukung atau dibatasi karena masalah keamanan.
- Evaluasi kode dinamis
-
Evaluasi kode dinamis tidak didukung. Konstruktor
eval()danFunctionmengalami kesalahan jika dicoba. Misalnya,const sum = new Function('a', 'b', 'return a + b')mengalami kesalahan. - Timer
-
Fungsi
setTimeout(),setImmediate(), danclearTimeout()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
Dateuntuk 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
fsuntuk akses sistem file seperti yang ada di Node.js. - Akses proses
-
Tidak ada akses proses. Misalnya, tidak ada objek
processglobal 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 untuk menggunakannya CloudFront KeyValueStore. Untuk informasi selengkapnya, lihat Amazon CloudFront KeyValueStore.
- Akses jaringan
-
Tidak ada dukungan untuk panggilan jaringan. Misalnya, XHR, HTTP (S), dan soket tidak didukung.