ugrás a tartalomhoz

JavaScript paraméterek nélküli függvény

Velias9 · 2009. Dec. 16. (Sze), 13.41
Sziasztok!

Ha jól emlékszek, akkor valahogy meg lehet csinálni, azt, hogy paraméterek nélkül adom meg a függvényt és a függvényen belül férek hozzá az esetlegesen megadott paraméterekhez. A baj csak az, hogy sehol sem találom. Ötletem sincs, hogy hogy is kellett ezt csinálni. Tudnátok segíteni?

Valami ilyesmire gondoltam:

function valami()
{
    // Itt kéne valahogy hozzáférni a változókhoz, ha adtak meg.
    // Valami ilyesmi volt:
    var i = 1;
    var tomb = new Array();
    while (true)
    {
        tomb[] = function.params[i];
        i++;
        if (function.params[i] == undefined)
        {
            break;
        }
    }
    // Valami
}
A másik kérdés, hogy meg lehet adni JavaScript-ben úgy paramétereket, egy függvényhez, hogy ha kevesebbet kap, mint a meghatározottak, akkor nem akad ki?
Valahogy így:

function valami(param1, param2, nemBiztosHogyKellParam1, nemBiztosHogyKellParam2)
{
     // Valami
}

valami("a", "b"); //Ez is megfelel neki
valami("a", "b", "c"); // Meg ez is

Remélem tudtok segíteni

Előre is köszönöm.
 
1

Az elsőre a válasz: ha jól

hosszu.kalman · 2009. Dec. 16. (Sze), 14.14
Az elsőre a válasz:

ha jól emlékszek így:

function valami() {
  for (i = 0; i < arguments.length; i++) {
    document.write(arguments[i]);
  }
} 
A második meg szerintem:

function valami2(elso, masodik, nem_kotelezo) {
  if (nem_kotelezo == null) {
    nem_kotelezo = 'ez egy string';
  }
  document.write(elso + masodik + nem_kotelezo);
}
2

Ha jól tudom...

tisch.david · 2009. Dec. 16. (Sze), 15.10
... a függvény szignatúrájában meg kell adni a paramétereket, belül viszont így lehet az át nem adottaknak default értéket adni:
function valami(param1, param2) {
  param1 = param1 || "default_value 1";
  param2 = param2 || "default_value 2";
  ...
}
Remélem, nem tévedtem nagyot.

Üdv:
Dávid
3

ojjektum

Ustak · 2009. Dec. 16. (Sze), 15.19
Ha én is beleszólhatok ,bevett módszer az, hogy a függvénynek egy objektumot adunk át, és annak a tulajdonságain sétálva végig ami tetszik tetszik ami nem nem, a több több, ha kevesebb kevesebb :-)

Hol is olvastam erről? Ja tudom már, itt ez a cikk:

http://weblabor.hu/cikkek/javascript-metaprogramozas

Az arguments objektum főcímre tessék rákeresni, mert hosszú, unalmas cikk.

Üdv:
Gábor.
4

calculator

toxin · 2009. Dec. 17. (Cs), 10.17
próbáltam találni egy állatorvosi lovat, azaz egy 'mindenegyben' esetet:

		function calculator(){
			
			// associative array of the possible operators
			var operations = {
				square : function(params) { return params[0]*params[0]; },
				multiply : function(params) {
					//default multiplier : 5
					params[1] = (params[1] && !isNaN(params[1]) ) ? params[1] : 5; 
					return params[0]*params[1]; 
				}
				/*etc...*/
			};
			
			// arrray like object > array conversion
			var	params = Array.prototype.slice.apply(arguments),
			// remove the operator from the params
				operator = params.shift();
			// do the necessary calculation with the operands
			return operations[operator](params);
		}
		
		(console && console.log || alert)(calculator("square",5));  //25
		(console && console.log || alert)(calculator("multiply",6,6)); //36
		(console && console.log || alert)(calculator("multiply",6)); //30
		(console && console.log || alert)(calculator("multiply",6,"not a number")); //30
amiben az összes lehetséges hiba ugyan nincs lekezelve, de tipikus valós életbeli példa, ha nem is mint a számológép, de paraméterezhető működésű függvényként feltétlen.

Paraméterszámot is lehetne vizsgálni, de ez a fenti cikkben benne van

/*....*/
if (arguments.length > arguments.callee.length)
/*....*/
http://weblabor.hu/cikkek/javascript-metaprogramozas ,

ellenben az arguments

Hasonló egy tömbhöz, de nem tartalmaz olyan metódusokat, min a slice vagy a sort.


tömbé alakítását beleraktam, mert azzal nem találkoztam a cikk adott bekezdésében.

üdv Csaba
5

Mondtam

Ustak · 2009. Dec. 17. (Cs), 10.30
hogy hosszú, unalmas cikk! :)

call, apply

főcím alatt van.
Üdv:
Gábor