Ich versuche, zwei Werte zurückzugeben in JavaScript . Ist dies möglich?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Ich versuche, zwei Werte zurückzugeben in JavaScript . Ist dies möglich?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Nein, aber Sie könnten ein Array mit Ihren Werten zurückgeben:
function getValues() {
return [getFirstValue(), getSecondValue()];
}
Dann können Sie sie wie folgt aufrufen:
var values = getValues();
var first = values[0];
var second = values[1];
Mit der neuesten ECMAScript 6-Syntax * können Sie den Rückgabewert auch intuitiver destrukturieren:
const [first, second] = getValues();
Wenn Sie jeden der zurückgegebenen Werte mit "Etiketten" versehen wollen (leichter zu pflegen), können Sie ein Objekt zurückgeben:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
Und um auf sie zuzugreifen:
var values = getValues();
var first = values.first;
var second = values.second;
Oder mit ES6-Syntax:
const {first, second} = getValues();
* Siehe diese Tabelle für die Browser-Kompatibilität. Grundsätzlich unterstützen alle modernen Browser außer dem IE diese Syntax, aber Sie können ES6-Code zur Erstellungszeit mit Tools wie Babel .
Ab ECMAScript 6 können Sie dies mit Arrays und "Destrukturierung von Aufträgen" . Beachten Sie, dass diese in älteren Javascript-Versionen nicht verfügbar sind (d.h. weder mit ECMAScript 3rd noch 5th Edition).
Sie ermöglicht die gleichzeitige Zuweisung an 1+ Variablen:
var [x, y] = [1, 2];
x; // 1
y; // 2
// or
[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4
Sie können auch Folgendes verwenden Destrukturierung von Objekten in Kombination mit der Kurzschrift von Eigenschaftswerten um die Rückgabewerte in einem Objekt zu benennen und die gewünschten Werte auszuwählen:
let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3
Und übrigens, lassen Sie sich nicht von der Tatsache täuschen, dass ECMAScript Ihnen erlaubt return 1, 2, ...
. Was dort wirklich passiert, ist nicht das, was man vermuten könnte. Ein Ausdruck in der Return-Anweisung - 1, 2, 3
- ist nichts anderes als ein Komma-Operator, der auf numerische Literale angewendet wird ( 1
, 2
y 3
), die schließlich den Wert des letzten Ausdrucks auswertet - 3
. Deshalb return 1, 2, 3
ist funktionell identisch mit nichts anderem als return 3
.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;
Seit ES6 können Sie dies tun
let newCodes = function() {
const dCodes = fg.codecsCodes.rs
const dCodes2 = fg.codecsCodes2.rs
return {dCodes, dCodes2}
};
let {dCodes, dCodes2} = newCodes()
Ausdruck zurückgeben {dCodes, dCodes2}
ist Eigenschaftswert Kurzschrift und ist gleichbedeutend mit {dCodes: dCodes, dCodes2: dCodes2}
.
Diese Zuweisung in der letzten Zeile wird als Objekt zerstörende Zuordnung . Es extrahiert den Eigenschaftswert eines Objekts und weist ihn einer gleichnamigen Variablen zu. Wenn Sie die Rückgabewerte Variablen mit unterschiedlichen Namen zuweisen möchten, können Sie dies wie folgt tun let {dCodes: x, dCodes2: y} = newCodes()
Ecmascript 6 enthält "destructuring Zuweisungen" (wie kangax erwähnt) so in allen Browsern (nicht nur Firefox) werden Sie in der Lage, ein Array von Werten zu erfassen, ohne ein benanntes Array oder Objekt für den alleinigen Zweck der Erfassung zu machen.
//so to capture from this function
function myfunction()
{
var n=0;var s=1;var w=2;var e=3;
return [n,s,w,e];
}
//instead of having to make a named array or object like this
var IexistJusttoCapture = new Array();
IexistJusttoCapture = myfunction();
north=IexistJusttoCapture[0];
south=IexistJusttoCapture[1];
west=IexistJusttoCapture[2];
east=IexistJusttoCapture[3];
//you'll be able to just do this
[north, south, west, east] = myfunction();
Sie können es bereits in Firefox ausprobieren!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.