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
const
danlet
.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
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])
Membuat string Unicode dari string byte UTF -8 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])
Membuat string byte UTF -8 yang dikodekan dari string Unicode.
-
- Jumlah
-
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 menggunakan Open BSDarc4random
seeded 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,
Date
selalu 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
-
Semua JSON fitur ES 5.1 didukung, termasuk
parse
danstringify
. - Array
-
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 kode otentikasi pesan berbasis hash () pembantu. 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 Crypto (hash danHMAC) 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.
Crypto (hash danHMAC)
Modul kriptografi (crypto
) menyediakan hashing standar dan kode otentikasi pesan berbasis hash () pembantu. 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
data
yang tersedia. hash.digest([encoding])
-
Menghitung digest dari semua data yang diteruskan menggunakan
hash.update()
. Pengkodean dapat berupahex
,base64
, ataubase64url
.
HMACmetode
crypto.createHmac(algorithm, secret key)
-
Menciptakan dan mengembalikan HMAC objek yang menggunakan yang diberikan
algorithm
dansecret key
. Algoritma dapat berupamd5
,sha1
, atausha256
. hmac.update(data)
-
Memperbarui HMAC konten dengan yang diberikan
data
. 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 URL kueri untuk Anda. Itu berarti bahwa dalam kebanyakan kasus Anda tidak perlu menggunakan modul ini.
Query string module (querystring
) menyediakan metode untuk parsing dan format URL query string. Anda dapat memuat modul menggunakan require('querystring')
. Modul ini menyediakan metode berikut.
querystring.escape(string)
-
URL-mengkodekan yang diberikan
string
, 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
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 nilai0
untuk menghapus pembatasan untuk menghitung kunci.
Secara default, karakter yang dikodekan persen dalam string kueri diasumsikan menggunakan pengkodean -8. UTF 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
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 -unsafe ke encoding persen dalam string kueri. Secara default, itu adalah
querystring.escape()
.
Secara default, karakter yang memerlukan pengkodean persen dalam string kueri dikodekan sebagai -8. UTF 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 URL dikodekan persen dalam yang diberikan, mengembalikan string kueri yang tidak
string
terlolos. 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()
danFunction
mengalami 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
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 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.