2016-11-22 3 views
0

Ich sehe das nicht in irgendeiner Kurzschreibtechnik oder StackOverflow-Fragen..dann frage ich mich, ob das Folgende eine Abkürzungstechnik sein kann.Warum deklarieren Sie eine Variable nicht als Argument einer Funktion?

Imagine habe ich eine Funktion, die ich weiß, gibt es genau ein Argument, das an sie übergeben werden:

function myFunc(arr) { 
    var i; 
    for(i = 0; i < arr.length; i++) { 
    if(arr[i] === 3) {return true;} 
    } 
} 

Ist es eine gute Praxis in diesem Fall zu schreiben:

function myFunc(arr, i) { 
    for(i = 0; i < arr.length; i++) { 
    if(arr[i] === 3) {return true;} 
    } 
} 

I wissen, dass wir in den meisten Fällen nur 4 Bytes speichern und dies stellt eine sehr kleine Verbesserung dar, aber manchmal für eine kurze Funktion kann es lesbarer sein, ohne 1/2 Zeilen zu verschwenden, nur um Variablen zu deklarieren.

Edit: auch ich möchte ich im Bereich der Funktion und nicht in der for Schleife sinc Ich möchte in der Lage sein, es wieder zu verwenden.

+1

Es ist nicht gut Praxis ist das zu ändern Signatur einer Methode nur so, dass Sie einige Bytes innerhalb der Methode speichern können. Es gibt keinen Grund, "ich" weiterzugeben. – Amy

+2

das hat 'für (var i = 0; i

+0

Wie hat das "4 Bytes" gespeichert? Warum sollte die Funktion verlangen, dass eine Variable, die nur intern bekannt ist oder intern verwendet wird, von einer externen Quelle an die Funktion geliefert wird? Es ist nicht klar, was Sie hier erreichen wollen. – David

Antwort

1

Sie würden dies nur tun, wenn Sie tatsächlich i in der for Schleife verwenden würden.

zB:

function myFunc(arr, i) { 
    for(i; i < arr.length; i++) { 
     arr[i]; 
    } 
} 

// Why you would do this though, is another matter (and bizarre) 
myFunc(anArray, 9); 

Stattdessen wäre es besser, zu tun:

function myFunc(arr) { 
    for(var i = 0; i < arr.length; i++) { 
     arr[i]; 
    } 
} 

und sich keine Sorgen über 4 Bytes ...

+0

Hi, Danke für deine Antwort, Du sagst das 'for (var i = 0; ...'), aber ich ziehe es vor, es im Funktionsumfang zu deklarieren (vielleicht hätte ich ein besseres Beispiel wählen können) falls ich es möchte Wiederverwenden es nach ... –

+0

Wenn Sie einen Loop-Zähler verwenden, werden Sie wahrscheinlich außerhalb der Schleife in den meisten Fällen verwenden. – Stuart

+0

Ja, sicher, aber ich könnte wieder für eine andere "for" -Schleife oder sogar für eine andere verwenden möchten Zweck, nur um einige temporäre Daten zu speichern ... aber trotzdem, danke, das kann eine Lösung sein .. –

Verwandte Themen