2017-08-31 2 views
1

Ich schreibe mein erstes Jquery abhängiges Plugin.Möglich, Standardparameter als Variable zu setzen JS

Meine Frage ist, kann Parameter wie so variabel sein Default:

var s = 400, 
    m = 500, 
    l = 700, 
    xl = 960; 

function breakpoints(s = s, m = m, l = l, xl = xl) { 
    return { 
    s: s, 
    m: m, 
    l: l, 
    xl: xl 
    }; 
}; 

Bei der Verwendung von console.log(s, m, l, xl); in meiner anfänglichen breakpoints() Erklärung ich den Fehler:

s is not defined

Vielen Dank im Voraus für Ihre Hilfe.

+0

sein auf der Suche nach Funktion Heben. –

+0

Also ist es nur ein Tippfehler? –

Antwort

4

ES6/ES2015 Unterstützung Standardwerte auf Argumente, so wird der Code so lange arbeiten, wie der Browser diese Standards unterstützt.

Das besagt, dass Sie den äußeren/inneren Variablen unterschiedliche Namen geben müssen, sonst sind sie nicht verfügbar, wo Sie versuchen, sie zu verwenden. Versuchen Sie folgendes:

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
function breakpoints(_s = s, _m = m, _l = l, _xl = xl) { 
 
    return { 
 
    s: _s, 
 
    m: _m, 
 
    l: _l, 
 
    xl: _xl 
 
    }; 
 
}; 
 

 
console.log(breakpoints());

+0

Das Duplizieren von Variablennamen in verschiedenen Bereichen ist ein bisschen ein Anti-Pattern - ich empfehle etwas wie eslint, um es zu markieren. –

+0

Dies beantwortet meine Frage @Rory. Wird akzeptieren, wenn ich kann. Vielen Dank. – danMad

+0

@DanMad kein Problem, froh zu helfen –

1

Sie können die Standardparameter ab ES6/ES2015 verwenden. Das einzige Problem ist, dass Sie Ihre Eingabeparameter umbenennen müssen.

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
function breakpoints(_s = s, _m = m, _l = l, _xl = xl) { 
 
    return { 
 
    s: _s, 
 
    m: _m, 
 
    l: _l, 
 
    xl: _xl 
 
    }; 
 
}; 
 

 
console.log(breakpoints());

0

var s = 400, 
 
    m = 500, 
 
    l = 700, 
 
    xl = 960; 
 

 
console.log(breakpoints(s,m,l,xl)); 
 

 
function breakpoints(s, m, l, xl) { 
 
    return { 
 
    s: s, 
 
    m: m, 
 
    l: l, 
 
    xl: xl 
 
    }; 
 
};

Verwandte Themen