создать из arguments настоящий массив
function someTest(a,b) { var args = Array.prototype.slice.call(arguments); args.shift()//удаляю аргумент for(i=0;i<arguments.length;i++){ alert(arguments[i]) } } someTest(1,2) Я ж удалил 1 аргумент, почему он остался? |
в цикле надо args использовать, а не arguments
function someTest(a,b) { var args = Array.prototype.slice.call(arguments); args.shift()//удаляю аргумент for(i=0;i<args.length;i++){ alert(args[i]) } } someTest(1,2); |
var args = [].slice.call( arguments ); Превращение arguments в настоящий Array ппц... Вы хоть темы называйте правильно |
Цитата:
[] - вызывает конструктор (тот самый ненужный вызов) .slice - ищет прототип slice в прототипах массива, то-есть глубокий поиск, начиная от экземпляра созданного массива call(...) - снова вызывает конструктор для наполнения его тем что есть в контексте. Пример данный Pavel M., намного производительный, так как не требует вызова лишних методов и поиска прототипа рекурсией. var args = Array.prototype.slice.call(arguments); |
И такую штуку теперь лучше в отдельный метод Array.from оформлять.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Каждый по своему прав. Но, согласитесь, зачем делать больше (нагружать комп/браузер), если можно меньше, при том же результате или при еще более выигрышном. Это из серии "===" (идентично) работает быстрее, чем "==" (равно), т.к. последнее производит преобразования типов [насколько мне известно]. Над этим не надо загоняться, просто иметь ввиду )
|
Цитата:
|
Часовой пояс GMT +3, время: 23:09. |