Показать сообщение отдельно
  #13 (permalink)  
Старый 05.02.2014, 14:01
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Ruslan_xDD Посмотреть сообщение
+
В массиве передавать один-два аргумента будет реально не удобно.

function fn(a, b, c) {
   fn.apply(null, [a, c]);
   //fn.call(null, a, c);
}

function fn2(a, b) {
   alert(a + b);
}

fn(2, null, 3);


С call'ом на три символа меньше, да и работает он вроде быстрее, если не ошибаюсь.
function fn(a, ...args) {
   fn.apply(null, args);

   // ну или бюджетный способ
   fn.apply(null, [].slice.call(arguments, 1));
}

function fn2(a, b) {
   alert(a + b);
}

fn(2, null, 3);


Казалось бы разницы нет, но в случае добавления новых аргументов в fn2 нам не придётся добавлять их и в call, т.е. код с apply более короткий гибкий и удобный.

А скорость в таких вещах - это последнее на что нужно смотреть, т.к. разница там мизерна, и 99.99% что это не критическое место в вашем приложении и оптимизация этого места не будет даже заметна.
__________________
kobezzza
code monkey
Ответить с цитированием