JavaScript'te iki değer döndürmeye çalışıyorum. Bu mümkün mü?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Hayır, ancak değerlerinizi içeren bir dizi döndürebilirsiniz:
function getValues() {
return [getFirstValue(), getSecondValue()];
}
Daha sonra bunlara şu şekilde erişebilirsiniz:
var values = getValues();
var first = values[0];
var second = values[1];
En son ECMAScript 6 sözdizimi* ile, dönüş değerini daha sezgisel bir şekilde de yapılandırabilirsiniz:
const [first, second] = getValues();
Dönen değerlerin her birine "labels" koymak istiyorsanız (bakımı daha kolay), bir nesne döndürebilirsiniz:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
Ve onlara erişmek için:
var values = getValues();
var first = values.first;
var second = values.second;
Ya da ES6 sözdizimi ile:
const {first, second} = getValues();
* Tarayıcı uyumluluğu için bu tabloya bakın. Temel olarak, IE dışındaki tüm modern tarayıcılar bu sözdizimini destekler, ancak Babel gibi araçlarla ES6 kodunu derleme sırasında IE uyumlu JavaScript'e derleyebilirsiniz.
Bunu Javascript 1.7'den itibaren "destructuring assignments" kullanarak yapabilirsiniz. Bunların eski Javascript sürümlerinde (yani ECMAScript 3. veya 5. sürümlerinde) mevcut olmadığını unutmayın.
Aynı anda 1'den fazla değişkene atama yapmanızı sağlar:
var [x, y] = [1, 2];
x; // 1
y; // 2
// or
[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4
Ayrıca, bir nesnedeki dönüş değerlerini adlandırmak ve istediklerinizi seçmek için özellik değeri kısaltması ile birleştirilmiş nesne yapılandırması kullanabilirsiniz:
let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3
Ve bu arada, ECMAScript'in return 1, 2, ...
yapmanıza izin vermesi sizi yanıltmasın. Orada gerçekte olan şey göründüğü gibi değildir. return ifadesindeki bir ifade - 1, 2, 3
- sayısal değişmezlere (1
, 2
ve 3
) sırayla uygulanan bir virgül operatöründen başka bir şey değildir ve sonunda son ifadesinin değerine (3
) değerlendirilir. Bu nedenle return 1, 2, 3
işlevsel olarak return 3
ten başka bir şeyle aynı değildir.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;
Sadece bir nesne değişmezi döndürün
function newCodes(){
var dCodes = fg.codecsCodes.rs; // Linked ICDs
var dCodes2 = fg.codecsCodes2.rs; //Linked CPTs
return {
dCodes: dCodes,
dCodes2: dCodes2
};
}
var result = newCodes();
alert(result.dCodes);
alert(result.dCodes2);