Tidak yakin apakah ini sintaks JS khusus Mozilla, tetapi saya sering menemukan variabel yang dideklarasikan dengan cara ini, misalnya, dalam dokumen SDK add-on :
var { Hotkey } = require("sdk/hotkeys");
dan di berbagai Chrome Javascript ( let
pernyataan digunakan sebagai pengganti var
),
let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
Saya merasa sangat membingungkan tetapi saya tidak dapat menemukan dokumentasi apa pun tentang kedua sintaks, bahkan di MDN .
Jawaban:
Keduanya adalah fitur JavaScript 1.7. Yang pertama adalah variabel level blok :
Yang kedua disebut penghancuran :
Bagi mereka yang akrab dengan Python, ini mirip dengan sintaks ini:
Potongan kode pertama adalah singkatan dari:
Anda dapat menulis ulang potongan kode kedua sebagai:
sumber
var { Hotkey }
setara denganvar { Hotkey: Hotkey }
. Terima kasih telah menemukan dokumentasinya!var Hotkey = require(...).Hotkey
? Atau hanya menyimpan penekanan tombol?Apa yang Anda lihat adalah tugas yang merusak. Ini adalah bentuk pencocokan pola seperti di Haskell.
Dengan menggunakan tugas destrukturisasi, Anda dapat mengekstrak nilai dari objek dan array dan menetapkannya ke variabel yang baru dideklarasikan menggunakan sintaks literal objek dan array. Ini membuat kode jauh lebih ringkas.
Sebagai contoh:
Kode di atas sama dengan:
Demikian pula untuk array:
Ini sama dengan:
Anda juga dapat mengekstrak dan mengganti nama properti objek sebagai berikut:
Ini sama dengan:
Hanya itu yang ada untuk itu.
sumber
var {a, b, c} = ascii;
sintaksnya.Ini adalah tugas yang merusak dalam Javascript dan merupakan bagian dari standar ES2015. Ini membongkar atau mengekstrak nilai dari array atau properti dari objek menjadi variabel yang berbeda. Misalnya: Array Destructuring
// dengan destructuring var [one, two, three] = foo
Misalnya: Perusakan Objek
var o = {p: 42, q: true}; var {p, q} = o;
console.log (p); // 42 console.log (q); // benar
// Tetapkan nama variabel baru var {p: foo, q: bar} = o;
console.log (foo); // 42 console.log (bar); // benar
sumber
Ada dokumentasi untuk
let
pernyataan di MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/letlet
mirip denganvar
yang membatasi ruang lingkup variabel yang dideklarasikan. Ini memungkinkan Anda untuk mendeklarasikan variabel di dalamif(){}
blok (atau beberapa blok lain) dan variabel itu hanya "terlihat" di dalam blok itu (JavaScript, sampai sekarang, memiliki ruang lingkup fungsi dan bukan cakupan blok seperti kebanyakan bahasa lain). Jadi padalet
dasarnya ini adalah "perbaikan" untuk sesuatu yang banyak orang memiliki masalah. Perhatikan bahwa tihs adalah fitur JavaScript 1.7.Belum menemukan apa pun
{Foo}
.sumber
{Foo}
{
dan}
.