Це 2014 рік і на пару років пізно. Я все ж думаю, що моя думка дотримується:
ІМХО ця дискусія досить сильно вибухнула. Цитуючи вищезгадану публікацію в блозі :
Більшість бібліотек утиліти JavaScript, такі як Underscore, Valentine та wu, покладаються на "первісний подвійний підхід". Цей підхід віддає перевагу власним реалізаціям, повертаючись до ванільного JavaScript, лише якщо нативний еквівалент не підтримується. Але jsPerf виявив цікаву тенденцію: найефективніший спосіб ітерації через масив або схожий на масив - це уникати власних реалізацій цілком, замість цього вибираючи прості петлі.
Наче «прості петлі» та «ванільний Javascript» є ріднішими, ніж реалізація методу Array або Object. Боже ...
Звичайно, було б добре мати єдине джерело істини, але цього немає. Навіть якщо вам сказали інакше, боже ванільний, дорогий мій. Мені шкода. Єдине припущення, яке насправді дотримується, - це те, що ми всі пишемо Javascript-код, який спрямований на ефективність роботи у всіх основних браузерах, знаючи, що всі вони мають різні реалізації одних і тих же речей. З сукою впоратися, м’яко кажучи. Але це передумова, сподобалось вам це чи ні.
Можливо, ви працюєте над масштабними проектами, які потребують щебетатих результатів, так що ви дійсно бачите різницю між 850 000 (підкреслення) проти 2 500 000 (лодаш) ітерацій над списком за секунду !
Я для одного не є. Я маю на увазі, що я працював над проектами, де мені доводилося вирішувати проблеми ефективності, але вони ніколи не були вирішені або спричинені ні підкресленням, ні Lo-Dash. І якщо я не захоплюю реальні відмінності у впровадженні та продуктивності (ми зараз говоримо на C ++), давайте дозволяє сказати цикл за ітерабельним (об’єктом чи масивом, розрідженим чи ні!), Я швидше не морочуся жодним претензії, засновані на результатах орієнтованої платформи, яка вже є впевненою .
Потрібно лише одне оновлення, скажімо, Rhino, щоб підпалити його реалізацію методу Array таким чином, що жоден "середньовічний цикл не працює краще і назавжди, а що-небудь" священик може сперечатися з простим фактом, що всі методи раптового масиву у FF набагато швидше, ніж його / її самовпевнений епізод. Людина, ти просто не можеш обдурити своє середовище виконання, обдуривши середовище виконання! Подумайте про це, рекламуючи ...
ваш пояс корисності
... наступного разу.
Отже, щоб це було актуально:
- Використовуйте підкреслення, якщо вам зручно, не жертвуючи рідним іш.
- Використовуйте Lo-Dash, якщо вам зручно і вам подобається його розширений каталог функцій (глибока копія тощо), і якщо ви відчайдушно потребуєте в миттєвій продуктивності, а головне, не заперечуйте за рішенням альтернативи, як тільки переїзд рідного API упевнені обходи. Що скоро відбудеться. Період.
- Є навіть третє рішення. Зробіть! Знайте своє середовище. Знайте про невідповідності. Прочитайте їх код ( Джон-Девід та Джеремі ). Не використовуйте те чи інше, не маючи можливості пояснити, чому дійсно потрібен рівень узгодженості / сумісності та покращує ваш робочий процес або покращує ефективність вашої програми. Цілком ймовірно, що ваші вимоги будуть задоволені простим поліфоном, який ви прекрасно вмієте самостійно писати. Обидві бібліотеки - це просто звичайна ваніль з трохи цукру. Вони обоє просто борються за те, хто подає найсолодший пиріг . Але повірте, врешті-решт обидва готують лише воду. Немає Бога Ванілі, тому не може бути папи Ванілі, правда?
Виберіть будь-який підхід, який найбільше відповідає вашим потребам. Як завжди. Я віддаю перевагу відсіч фактичних реалізацій над виправданими кодами для виконання, але навіть це, здається, є справою смаку в наш час. Дотримуйтесь якісних ресурсів, таких як http://developer.mozilla.com та http://caniuse.com, і у вас все буде добре.