2651 Stimmen

Einen Standardparameterwert für eine JavaScript-Funktion festlegen

Ich möchte eine JavaScript-Funktion, um optionale Argumente, die ich einen Standard auf, die verwendet werden, wenn der Wert nicht definiert ist (und ignoriert, wenn der Wert übergeben wird). In Ruby kann man das so machen:

def read_file(file, delete_after = false)
  # code
end

Funktioniert das auch in JavaScript?

function read_file(file, delete_after = false) {
  // Code
}

1voto

Engr.Aftab Ufaq Punkte 1457
export const getfilesize = (bytes, decimals = 2) => {
    if (bytes === 0){ 
        return '0 Bytes';
    }else{
        const k = 1024;
        const dm = decimals < 0 ? 0 : decimals;
        const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
        const i = Math.floor(Math.log(bytes) / Math.log(k));
        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];

    }
}

1 Stimmen

Dies fügt den vorhandenen Antworten eigentlich nichts Neues hinzu.

0voto

Muhammad Rizwan Punkte 348
def read_file(file, delete_after = false)
  # code
end

Der folgende Code kann in dieser Situation sowohl mit ECMAScript 6 (ES6) als auch mit früheren Versionen funktionieren.

function read_file(file, delete_after) {
    if(delete_after == undefined)
        delete_after = false;//default value

    console.log('delete_after =',delete_after);
}
read_file('text1.txt',true);
read_file('text2.txt');

als Standardwert in Sprachen funktioniert, wenn der Parameterwert der Funktion beim Aufruf übersprungen wird, in JavaScript wird er zugewiesen undefiniert . Dieser Ansatz sieht programmtechnisch nicht attraktiv aus, hat aber Abwärtskompatibilität .

0 Stimmen

Utilisez === undefined . == gebrochen ist ( null == undefined wahr ist, zum Beispiel). Dies fügt nicht viel zu bestehenden Antworten, und JS unterstützt Standard-Argumente in den letzten Jahren, so würde ich nur empfehlen, dass als das beste Äquivalent der Python-Code und verwenden Sie einen Transpiler für Abwärtskompatibilität. Außerdem gibt es einen Unterschied zwischen dem expliziten Aufruf der Funktion mit undefined und kein Argument übergeben, also würde ich auch die Länge der Argumente überprüfen, wenn Sie echte Kongruenz wollen.

-1voto

new QOpenGLWidget Punkte 1720

Die Antwort ist ja. In der Tat gibt es viele Sprachen, die Standardparameter unterstützen. Python ist eine von ihnen:

def(a, enter="Hello"):
   print(a+enter)

Obwohl dies aufgrund der Klammern Python 3-Code ist, funktionieren Standardparameter in Funktionen auch in JS.

Zum Beispiel, und in Ihrem Fall:

function read_file(file, deleteAfter=false){
  console.log(deleteAfter);
}

read_file("test.txt");

Aber manchmal braucht man nicht unbedingt Standardparameter.

Sie können die Variable einfach direkt nach dem Beginn der Funktion definieren, etwa so:

function read_file(file){
  var deleteAfter = false;
  console.log(deleteAfter);
}

read_file("test.txt");

In meinen beiden Beispielen wird das Gleiche zurückgegeben. Aber manchmal können sie tatsächlich nützlich sein, wie bei sehr fortgeschrittenen Projekten.

Zusammenfassend lässt sich also sagen, dass Standardparameterwerte in JS verwendet werden können. Aber es ist fast das Gleiche wie die Definition einer Variablen direkt nach dem Start der Funktion. Manchmal sind sie aber dennoch sehr nützlich. Wie Sie vielleicht bemerkt haben, benötigen Standard-Parameterwerte 1 Zeile weniger Code als die Standardmethode, bei der der Parameter direkt nach dem Start der Funktion definiert wird.

EDIT: Und das ist super wichtig! Dies wird pas im IE funktionieren. Siehe Dokumentation . Im IE müssen Sie also die Methode "Variable am Anfang der Funktion definieren" verwenden. Standardparameter funktionieren im IE nicht.

1 Stimmen

Der Python-Code hier ist nicht gültig und der JS-Code macht nicht viel Sinn. Das mit der Variablen in der Funktion ist anders als das mit dem Standardwert, denn der Aufrufer kann nicht wirklich die false Wert. Ich bin mir also nicht sicher, inwiefern dies relevant ist.

-3voto

Muhammad Awais Punkte 3757

Ja, das funktioniert in Javascript. Sie können auch das tun:

function func(a=10,b=20)
{
    alert (a+' and '+b);
}

func(); // Result: 10 and 20

func(12); // Result: 12 and 20

func(22,25); // Result: 22 and 25

2 Stimmen

Es ist derzeit nicht portabel... IE... developer.mozilla.org/de/docs/Web/JavaScript/Reference/ (Und es ist eine doppelte Antwort...)

CodeJaeger.com

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.

Powered by:

X