Saya mencoba mengembalikan dua nilai dalam JavaScript . Apakah ini mungkin?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
javascript
return
multiple-variable-return
Asim Zaidi
sumber
sumber
Jawaban:
Tidak, tetapi Anda bisa mengembalikan array yang mengandung nilai-nilai Anda:
Maka Anda dapat mengaksesnya seperti:
Dengan sintaks ECMAScript 6 * terbaru, Anda juga dapat merusak nilai pengembalian secara lebih intuitif:
Jika Anda ingin meletakkan "label" pada masing-masing nilai yang dikembalikan (lebih mudah untuk dipelihara), Anda dapat mengembalikan objek:
Dan untuk mengaksesnya:
Atau dengan sintaks ES6:
* Lihat tabel ini untuk kompatibilitas browser. Pada dasarnya, semua browser modern selain dari IE mendukung sintaks ini, tetapi Anda dapat mengkompilasi kode ES6 ke JavaScript yang kompatibel dengan IE saat membuat dengan alat-alat seperti Babel .
sumber
return {dCodes : dCodes, dCodes2 : dCodes2};
untuk memudahkan referensi.const { dCodes, dCodes2 } = newCodes();
return {dCodes, dCodes2}
bekerja sama persis dengan @Intelekshual yang disebutkan dan (2) menggunakan fungsi yang sama Anda dapat mengaksesnya dengan array yang merusak[dCodes, dCodes2] = newCodes()
atau (3) objek({dCodes, dCodes2} = newCodes())
(tidak perlu menggunakan deklarasi di sana @Taylor , meskipunvar
akan lebih cocok untuk contoh Sasha saat ini).Anda dapat melakukan ini dari Javascript 1.7 dan seterusnya menggunakan "tugas penataan" . Perhatikan bahwa ini tidak tersedia dalam versi Javascript yang lebih lama (artinya - baik dengan ECMAScript edisi 3 atau 5).
Ini memungkinkan Anda untuk menetapkan 1+ variabel secara bersamaan:
Anda juga dapat menggunakan perusakan objek yang dikombinasikan dengan singkatan nilai properti untuk memberi nama nilai kembali dalam suatu objek dan memilih yang Anda inginkan:
Dan omong-omong, jangan tertipu oleh fakta bahwa ECMAScript memungkinkan Anda untuk melakukannya
return 1, 2, ...
. Apa yang sebenarnya terjadi tidak ada apa yang tampak. Ekspresi dalam pernyataan kembali -1, 2, 3
- tidak lain adalah sebuah operator koma diterapkan pada literal numerik (1
,2
, dan3
) secara berurutan, yang akhirnya mengevaluasi ke nilai ekspresi yang terakhir -3
. Itu sebabnyareturn 1, 2, 3
secara fungsional identik dengan yang lainreturn 3
.sumber
function foo(){return 1,2,3;}
melakukanconsole.log([].push(foo()))
print 1.Cukup kembalikan objek literal
sumber
Sejak ES6 Anda dapat melakukan ini
Pengembalian ekspresi
{dCodes, dCodes2}
adalah singkatan nilai properti dan setara dengan ini{dCodes: dCodes, dCodes2: dCodes2}
.Penugasan ini pada baris terakhir disebut penugasan penghancuran objek . Ini mengekstraksi nilai properti objek dan menugaskannya ke variabel dengan nama yang sama. Jika Anda ingin menetapkan nilai kembali ke variabel nama yang berbeda, Anda bisa melakukannya seperti ini
let {dCodes: x, dCodes2: y} = newCodes()
sumber
Ecmascript 6 termasuk "tugas penataan" (seperti yang disebutkan kangax) sehingga di semua browser (tidak hanya Firefox) Anda akan dapat menangkap array nilai tanpa harus membuat array bernama atau objek untuk tujuan menangkapnya saja.
Anda dapat mencobanya di Firefox!
sumber
Layak lain untuk menyebutkan sintaks yang baru diperkenalkan (ES6) adalah penggunaan singkatan pembuatan objek selain untuk menghancurkan tugas.
Sintaks ini dapat di-polyfill dengan babel atau polyfiller js lainnya untuk browser lama tetapi untungnya sekarang berfungsi secara native dengan versi terbaru Chrome dan Firefox.
Tetapi ketika membuat objek baru, alokasi memori (dan akhirnya beban gc) terlibat di sini, jangan berharap banyak kinerja darinya. JavaScript bukanlah bahasa terbaik untuk mengembangkan hal-hal yang sangat optimal, tetapi jika itu diperlukan, Anda dapat mempertimbangkan untuk menempatkan hasil Anda pada objek di sekitarnya atau teknik semacam itu yang biasanya merupakan trik kinerja umum antara JavaScript, Jawa dan bahasa lainnya.
sumber
Cara terbaik untuk ini adalah
Kemudian gunakan
kembali 4
di ES6 Anda dapat menggunakan kode ini
sumber
Selain mengembalikan array atau objek seperti yang direkomendasikan orang lain, Anda juga dapat menggunakan fungsi kolektor (mirip dengan yang ditemukan di The Little Schemer ):
Saya membuat tes jsperf untuk melihat mana dari tiga metode yang lebih cepat. Array tercepat dan kolektor paling lambat.
http://jsperf.com/returning-multiple-values-2
sumber
collector
disebutcontinuation
dan teknik ini disebut CPSDi JS, kita dapat dengan mudah mengembalikan tuple dengan array atau objek, tapi jangan lupa! => JS adalah
callback
bahasa yang berorientasi, dan ada sedikit rahasia di sini untuk "mengembalikan beberapa nilai" yang belum ada yang disebutkan, coba ini:menjadi
:)
bam! Ini hanyalah cara lain untuk menyelesaikan masalah Anda.
sumber
Menambahkan bagian-bagian penting yang hilang untuk menjadikan pertanyaan ini sumber daya yang lengkap, karena ini muncul dalam hasil pencarian.
Destrukturisasi Objek
Dalam perusakan objek, Anda tidak perlu menggunakan nilai kunci yang sama dengan nama variabel Anda, Anda dapat menetapkan nama variabel yang berbeda dengan mendefinisikannya seperti di bawah ini:
Destrukturisasi Array
Dalam perusakan array, Anda dapat melewati nilai yang tidak Anda butuhkan.
Perlu diperhatikan bahwa
...rest
harus selalu ada di akhir karena tidak masuk akal untuk menghancurkan apa pun setelah semua yang lain digabungkanrest
.Saya harap ini akan menambah nilai pada pertanyaan ini :)
sumber
Anda juga dapat melakukan:
sumber
Cara yang sangat umum untuk mengembalikan beberapa nilai dalam javascript adalah menggunakan literal objek , jadi sesuatu seperti:
dan dapatkan nilai-nilai seperti ini:
atau bahkan cara yang lebih pendek:
dan dapatkan secara individual seperti:
sumber
Anda dapat menggunakan "Object"
sumber
Semuanya benar.
return
secara logis memproses dari kiri ke kanan dan mengembalikan nilai terakhir.sumber
,
merupakan operator dan dapat digunakan dalam ekspresi apapun. Tidak ada yang istimewa direturn
sini.Saya akan menyarankan untuk menggunakan penugasan perusakan terbaru (Tapi pastikan itu didukung di lingkungan Anda )
sumber
Saya tahu dua cara untuk melakukan ini: 1. Kembali sebagai Array 2. Kembali sebagai Objek
Inilah contoh yang saya temukan:
sumber
Beberapa hari yang lalu saya memiliki persyaratan yang sama untuk mendapatkan beberapa nilai pengembalian dari fungsi yang saya buat.
Dari banyak nilai kembali, saya memerlukannya untuk mengembalikan hanya nilai spesifik untuk kondisi tertentu dan kemudian nilai pengembalian lainnya sesuai dengan kondisi lainnya.
Berikut adalah contoh bagaimana saya melakukan itu:
Fungsi:
Mendapatkan nilai balik yang diperlukan dari objek yang dikembalikan oleh fungsi:
Inti dari menjawab pertanyaan ini adalah untuk membagikan pendekatan ini dalam mendapatkan Tanggal dalam format yang baik. Semoga ini bisa membantu Anda :)
sumber
Saya tidak menambahkan baru di sini tetapi cara alternatif lain.
sumber
Yah kita tidak bisa melakukan apa yang Anda coba. Tetapi sesuatu yang mungkin di bawah ini dapat dilakukan.
Lalu saat memanggil metode
sumber