de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Tilendor
Tilendor
Question

Ustaw domyślną wartość parametru dla funkcji JavaScript

Chciałbym, aby funkcja JavaScript miała opcjonalne argumenty, które ustawiam domyślnie, które są używane, jeśli wartość nie jest zdefiniowana (i ignorowane, jeśli wartość jest przekazywana). W Ruby możesz to zrobić w ten sposób:

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

Czy to działa w JavaScript?

function read_file(file, delete_after = false) {
  // Code
}
2271 2009-05-21T20:07:17+00:00 3
Filipp W.
Filipp W.
Edytowane pytanie 17. maja 2019 в 4:29
Programowanie
javascript
parameters
function
default-parameters
Popular videos
8. Kurs JavaScript - Funkcje (argumenty)
8. Kurs JavaScript - Funkcje (argumenty)
1 rok temu
9. Kurs JavaScript - Funkcje cz. 2 (return, rekurencja)
9. Kurs JavaScript - Funkcje cz. 2 (return, rekurencja)
1 rok temu
Stare funkcje w JavaScript i CSS, które warto znać!
Stare funkcje w JavaScript i CSS, które warto znać!
6 miesięcy temu
4. Kurs JavaScript - Instrukcje warunkowe (If)
4. Kurs JavaScript - Instrukcje warunkowe (If)
1 rok temu
Default parameters in javascript
Default parameters in javascript
4 lata temu
JavaScript Function Default Parameters
JavaScript Function Default Parameters
4 lata temu
Różnice pomiędzy funkcjami (function declaration, function expression, arrow function)
Różnice pomiędzy funkcjami (function declaration, function expression, arrow function)
2 lata temu
JavaScript : Set a default parameter value for a JavaScript function
JavaScript : Set a default parameter value for a JavaScript function
4 miesiące temu
Wartości domyślne dla parametru Funkcji w JavaScript
Wartości domyślne dla parametru Funkcji w JavaScript
1 rok temu
Parametry (argumenty) Funkcji w JavaScript
Parametry (argumenty) Funkcji w JavaScript
1 rok temu
Operator reszty jako parametr Funkcji w JavaScript
Operator reszty jako parametr Funkcji w JavaScript
1 rok temu
JavaScript: Funkcje, Webinar #03 [intro]
JavaScript: Funkcje, Webinar #03 [intro]
2 lata temu
JavaScript #14 funkcje - parametry i argumenty
JavaScript #14 funkcje - parametry i argumenty
4 lata temu
funkcje strzałkowe (ang. arrow functions) w JavaScript
funkcje strzałkowe (ang. arrow functions) w JavaScript
1 rok temu
SWIFT 2 - Seria C, cz. 21: Funkcje i ich domyślne parametry. UczymySieKodowac.pl
SWIFT 2 - Seria C, cz. 21: Funkcje i ich domyślne parametry. UczymySieKodowac.pl
5 lat temu
Zasięg zmiennych tworzony przez Funkcje w JavaScript
Zasięg zmiennych tworzony przez Funkcje w JavaScript
1 rok temu
Hoisting w JavaScript
Hoisting w JavaScript
1 rok temu
JavaScript tutorial #6 |  - Funkcje, operacje - Kurs Wprowadzenie do javascript
JavaScript tutorial #6 | - Funkcje, operacje - Kurs Wprowadzenie do javascript
7 miesięcy temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Tom Ritter
Tom Ritter
21. maja 2009 в 8:10
2009-05-21T20:10:52+00:00
Więcej
Źródło
Edytuj
#9086541

Od ES6/ES2015, domyślne parametry są w specyfikacji języka.

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

po prostu działa.

Odnośnik: Default Parameters - MDN

Parametry domyślne funkcji pozwalają na inicjalizację parametrów formalnych wartościami domyślnymi, jeśli przekazano brak wartości lub niezdefiniowane.

Możesz również symulować domyślne nazwane parametry poprzez destrukturyzację:

// the `= {}` below lets you call the function without any parameters
function myFor({ start = 5, end = 1, step = -1 } = {}) { // (A)
    // Use the variables `start`, `end` and `step` here
    ···
}

Przed ES2015,

Istnieje wiele sposobów, ale jest to moja preferowana metoda - pozwala ci przekazać wszystko, co chcesz, w tym false lub null. (typeof null == "object")

function foo(a, b) {
  a = typeof a !== 'undefined' ? a : 42;
  b = typeof b !== 'undefined' ? b : 'default_b';
  ...
}
Filipp W.
Filipp W.
Edytowana odpowiedź 17. maja 2019 в 4:38
3205
0
Russ Cam
Russ Cam
21. maja 2009 в 8:09
2009-05-21T20:09:48+00:00
Więcej
Źródło
Edytuj
#9086540
function read_file(file, delete_after) {
    delete_after = delete_after || "my default here";
    //rest of code
}

To przypisuje delete_after wartość delete_after, jeśli nie jest to wartość falsey, w przeciwnym razie przypisuje łańcuch "my default here". Aby uzyskać więcej szczegółów, sprawdź Doug Crockford's survey of the language and check out the section on Operators.

To podejście nie działa, jeśli chcesz przekazać wartość false, tzn. false, null, undefined, 0 lub "". Jeśli wymagasz, aby wartości false były przekazywane, musisz użyć metody z Odpowiedź Toma Rittera.

Kiedy mamy do czynienia z wieloma parametrami funkcji, często przydatne jest umożliwienie konsumentowi przekazania argumentów parametrów w obiekcie, a następnie merge tych wartości z obiektem, który zawiera wartości domyślne dla funkcji

function read_file(values) {
    values = merge({ 
        delete_after : "my default here"
    }, values || {});

    // rest of code
}

// simple implementation based on $.extend() from jQuery
function merge() {
    var obj, name, copy,
        target = arguments[0] || {},
        i = 1,
        length = arguments.length;

    for (; i < length; i++) {
        if ((obj = arguments[i]) != null) {
            for (name in obj) {
                copy = obj[name];

                if (target === copy) {
                    continue;
                }
                else if (copy !== undefined) {
                    target[name] = copy;
                }
            }
        }
    }

    return target;
};

do użycia

// will use the default delete_after value
read_file({ file: "my file" }); 

// will override default delete_after value
read_file({ file: "my file", delete_after: "my value" }); 
Vojtech Ruzicka
Vojtech Ruzicka
Edytowana odpowiedź 9. stycznia 2018 в 10:30
590
0
 tj111
tj111
21. maja 2009 в 8:18
2009-05-21T20:18:46+00:00
Więcej
Źródło
Edytuj
#9086542

Osobiście uważam, że coś tak prostego jest o wiele bardziej zwięzłe i czytelne.

function pick(arg, def) {
   return (typeof arg == 'undefined' ? def : arg);
}

function myFunc(x) {
  x = pick(x, 'my default');
} 
144
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 11 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
BG
DA
DE
EL
ES
FI
FR
ID
IT
JA
KO
NL
PL
PT
RU
SL
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem