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;
};
Eine weitere erwähnenswerte, neu eingeführte (ES6) Syntax ist die Verwendung von Objekterzeugungskurzzeichen zusätzlich zur destruktiven Zuweisung.
function fun1() {
var x = 'a';
var y = 'b';
return { x, y, z: 'c' };
// literally means { x: x, y: y, z: 'c' };
}
var { z, x, y } = fun1(); // order or full presence is not really important
// literally means var r = fun1(), x = r.x, y = r.y, z = r.z;
console.log(x, y, z);
Diese Syntax kann mit Babel oder einem anderen js-Polyfiller für ältere Browser ausgefüllt werden, aber glücklicherweise funktioniert sie jetzt nativ mit den aktuellen Versionen von Chrome und Firefox.
Da aber die Erstellung eines neuen Objekts, die Speicherzuweisung (und eventuell das Laden von gc) hier involviert sind, sollte man nicht viel Leistung davon erwarten. JavaScript ist nicht die beste Sprache für die Entwicklung hoch optimaler Dinge sowieso, aber wenn das erforderlich ist, können Sie erwägen, setzen Sie Ihr Ergebnis auf umgebende Objekt oder solche Techniken, die in der Regel gemeinsame Leistung Tricks zwischen JavaScript, Java und anderen Sprachen sind.
Eine sehr verbreitete Methode zur mehrere Werte zurückgeben in Javascript ist die Verwendung eines Objektliterale also so etwas wie:
const myFunction = () => {
const firstName = "Alireza",
familyName = "Dezfoolian",
age = 35;
return { firstName, familyName, age};
}
und erhalten die Werte wie folgt:
myFunction().firstName; //Alireza
myFunction().familyName; //Dezfoolian
myFunction().age; //age
oder sogar einen kürzeren Weg:
const {firstName, familyName, age} = myFunction();
und erhalten sie individuell wie:
firstName; //Alireza
familyName; //Dezfoolian
age; //35
Anstatt ein Array oder ein Objekt zurückzugeben, wie es andere empfohlen haben, können Sie auch eine Collector-Funktion verwenden (ähnlich der in Der kleine Betrüger ):
function a(collector){
collector(12,13);
}
var x,y;
a(function(a,b){
x=a;
y=b;
});
Ich habe einen jsperf-Test durchgeführt, um zu sehen, welche der drei Methoden schneller ist. Array ist am schnellsten und Collector ist am langsamsten.
In JS können wir einfach ein Tupel mit einem Array oder Objekt zurückgeben, aber vergessen Sie nicht! => JS ist ein callback
orientierten Sprache, und es gibt hier ein kleines Geheimnis für die "Rückgabe mehrerer Werte", das noch niemand erwähnt hat, versuchen Sie dies:
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
wird
var newCodes = function(fg, cb) {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
cb(null, dCodes, dCodes2);
};
:)
Das ist einfach eine andere Art, Ihr Problem zu lösen.
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.