2015-08-25 8 views

Odpowiedz

8

Tak więc mamy przykład do pracy, to jest dość powszechne z jQuery na $.each gdzie masz kod, który nie potrzebuje indeksu, tylko wartość w zwrotnego iteracji ($.each pisanie jest wstecznie względem Array#forEach):

$.each(objectOrArrayLikeThing, function(_, value) { } 
    // Use value here 
}); 

Korzystanie _ jest najbliższy widziałem w standardowy sposób to zrobić, tak, ale ja też widziałem wiele innych   — nadając mu nazwę odblaskowe z jego przeznaczeniem i tak (index), nazywając go unused itp.

6

Korzystanie z _ jest standardem, prawdopodobnie biorąc pod uwagę ilu programistów JS również używa Ruby.

Należy zauważyć, że w Ruby, nie wychodząc z _ zignorować parametrów używać nazw zmiennych - jak ważne są nazwy zmiennych - ale _ sama, która nie jest zmienny, ale czarna dziura . def f(_, _, x) jest poprawna (ignorując dwa argumenty); def f(_a, _a, x) jest nieprawidłowy (dwa parametry mają tę samą nazwę); def f(_a, _b, x) puts _a, _b, x end; f(1, 2, 3) wyświetla wszystkie trzy liczby.

Można zrobić to samo w JavaScript z dowolnej zmiennej - JavaScript nie widzi nic złego w powtarzając nazwy parametrów: function a(a, a, x) { return [a, x]; } jest nieważny, z późniejszym wartości zastępując wcześniejsze: a(1, 2, 3) powraca [2, 3]. _ to kolejna nazwa zmiennej w JavaScript, bez specjalnej obsługi.

EDYCJA: Podziękowania dla Andrew Grimma za dobre referencje na temat _ in Ruby.

+0

Dla statusu '_' w Rubim, istnieje http://stackoverflow.com/questions/9559561/where-and -how-is-the-is-the-underscore-variable-specified –

+0

@AndrewGrimm: Ach, dobre znalezisko. Dzięki. – Amadan

+5

* "JavaScript nie widzi nic złego w powtarzaniu nazw parametrów" * FYI, to jest nieważne [od 2009] (http://ecma-international.org/ecma-262/5.1/#sec-13.1) jeśli używasz trybu ścisłego (a nie używanie trybu ścisłego to ... cóż ... powiedzmy: używaj trybu ścisłego :-)). Przykład: https://jsfiddle.net/L9rc23xm/ –

9

z przeglądarkami wspieranie demontażu struktury można zrobić:

function ({}, {}, value) { 
    // ...value 
} 

Który rodzaj schludny w to, że unika problemu wielu argumentów mających tę samą nazwę i nie będzie również powodować problemy z bibliotek, które przypisać do metody _ (lodówka, podkreślenie itp.).

+1

Niestety, to wyrzuca, jeśli nieużywany argument to 'undefined' lub' null'. –

+0

@OlegsJeremejevs 'funkcja ({} = {}, {} = {}, wartość) {...}' pomaga tutaj, ale staje się bałaganiarski ... – oluckyman

+0

@oluckyman Ładne obejście! "Nie chcesz nazwać nieużywanego arg? Po prostu hantle to!" –

Powiązane problemy