2013-07-11 3 views
3

Вызов функции Javascript с чем-то вродеПередача именованные аргументы функции Javascript

someFunction(1, true, 'foo'); 

не очень понятно, без знакомства с функцией.

я видел и использовал стиль, в котором комментарии вставленный назвать аргументы:

someFunction(/*itemsToAdd*/1, /*displayLabel*/ true, /*labelText*/ 'foo'); 

Но когда он выходит за пределы 3-х или более параметров, кажется, лучше передавать аргументы в формате JSON объект, который делает его не зависит от заказа и позволяет устанавливать значения по умолчанию в вызываемой функции

someFunction({'itemsToAdd':1, 'labelText':'foo', 'displayLabel':true}); 

Мой вопрос: какова общая практика в отрасли, и есть ли основополагающие причины не использовать ни один из этих методов. Например, Линт не любит второй метод.

+1

Если вы используете что-то вроде Coffeescript, у которого есть деструктивные назначения, этот последний стиль становится очень удобным. – Thilo

+1

[This] (http://jamie-wong.com/2011/11/28/name-your-arguments/) решает проблему с стилем комментариев. Кажется, что второе является более распространенным явлением. – jpmc26

ответ

0

Лично я бы просто grep имя функции и взглянуть на комментарий, связанный с ним. Укомплектованный код будет содержать комментарий выше функции, объясняющей, что такое аргументы и что он делает с ними, и вы можете просто вставить это над вызовом функции, если вам нужно объяснить, почему ваши аргументы являются такими, какими они есть.

Использование аргументов JSON для передачи аргументов похоже на способ добавления ненужных синтаксических разборов и, возможно, путаницу с сопровождающим - просто добавьте больше полей и передайте NULL в поля, где вы хотите значения по умолчанию, и вы можете объяснить, переходя в NULL в комментарии о вызове вместо того, чтобы просто не показывать их в JSON.

+2

Он просто неправильно вызывает javascript-объекты JSON, на самом деле нет JSON или JSON-синтаксического анализа. – Esailija

+0

Esailija, спасибо за ваш ответ. Я думал, что JSON была обозначением, используемым для создания объекта JS. Является ли мой третий пример не JSON? Теперь я буду google, но объяснение может быть полезно для других читателей. –

+0

JTravakh, спасибо. Я согласен с тем, что комментарии важны в любом случае, я просто надеялся избежать постоянной проверки и определения параметров при написании кода. Особенно, когда функция находится в другом модуле/файле. Третий метод (вещь «JSON») кажется более запоминающимся и неприхотливым. Написание кода выполняется быстрее, и чтение намного проще, поэтому обнаружение ошибок проще. Кажется, что JavaScript работает на уровне 70% машинного кода, поэтому в большинстве случаев синтаксический анализ не будет заметным, да? –

Смежные вопросы