2012-03-23 9 views

Antwort

3

Es gibt keine Möglichkeit, die gleiche Funktionalität zu erreichen, indem die Argumente Variable, da es keine Informationen über Parameternamen enthält. Um dies zu umgehen, könnten Sie von der Verwendung mehrerer Parameter zu einem zusammengesetzten Parameterobjekt wechseln, das die tatsächlichen Parameterwerte in seinen Elementen enthält.

<script> 
    function abc(params) { 
    var x = params.x; 
    var y = params["y"]; 
    } 

    abc({ x: 10, y: "hello" }); 
</script> 

Auf diese Weise aber Sie in der Funktionssignatur einige der Lesbarkeit des Codes verlieren, und Sie müssen param Namen auf der rufenden Seite zur Verfügung stellen.

+0

Oh, ich mag es. Hallo! Könnte ich dann verwenden: Argumente [0] .params.x? –

+0

Sie kennen Peter, das war eine sehr gute Erklärung. –

+0

Pedro: Argumente [0] .x würde so funktionieren, wie ich schrieb –

1

Sie können die arguments Pseudovariable referenzieren, aber die Argumente werden nach Nummer, nicht nach Name indiziert. Es ist eine gute Idee zu vermeiden, direkt mit arguments zu verwirren; ein gemeinsames Idiom ist es zu einem echten Array zu konvertieren:

var args = Array.slice.call(arguments, 0); 
+0

Ich habe JavaScript seit über einem Jahr studiert und kann mich nicht erinnern, dieses übliche Idiom zu sehen. Mann, ich muss die Bücher mehr schlagen! –

+0

Also würde ich es dann als args ["x"] vielleicht verweisen? –

+0

@ Pointy, warum nicht direkt verweisen, d. H. Argumente [0] '? – Henry

1

Ich fürchte nicht. Sie können explizit x oder arguments[0] aber nichts mehr verwenden. Es sei denn, wie Sie von anderen erfahren haben, übergeben Sie ein Objekt.

Verwandte Themen