...
оператор расширения (spread syntax) работает не в объявлении функции, а в её вызове; Upd. в объявлении функции троеточие тоже возможно и называется «оставшиеся параметры» (rest parameters) и, в отличие от arguments
в моём ответе (массивоподобный объект) является полноценным массивом переданных параметров. Всё это часть нового синтакса ECMAScript 6 и поддерживается не всеми браузерами.i = len
, но в массиве, скажем, длиной 3 нет элемента с индексом 3. Самый большой индекс это длина – 1 = 2
: [0, 1, 2]
function changeCollection() {
var result = [], i;
for( i = 0; i < arguments.length; i++) {
arguments[i].shift();
result.push( arguments[i]);
}
return result;
}
var args = [ [1,2,3], [4,5,6]];
changeCollection( ...args) // эксперимент не для всех браузеров [[2,3],[5,6]]
changeCollection( [7,8,9], ['a','b','c']) // работает везде [[8,9],["b","c"]]
function changeCollection(...arr) {
for( let i = 0; i < arr.length; i++) {
arr[i].shift();
}
return arr;
}
const foo = (str, arr, cb) => str + arr.map(item => cb(item)).join(" ");
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);
console.log(foo("New value: ", ["apple", "orange", "pear"], capitalize)); // New value: Apple Orange Pear
const foo = (str, arr, cb) => str + arr.map(item => cb(item, 1)).join(" ");
const substring = (str, start) => str.slice(start); // Получение строки с start (в частности со второго) символа
console.log(foo("New value: ", ["apple", "orange", "pear"], substring)); // New value: pple range ear
const foo = (str, arr, cb) => str + arr.map(item => cb.call(item, 1)).join(" ");
console.log(foo("New value: ", ["apple", "orange", "pear"], String.prototype.slice)); // New value: pple range ear
const foo = (str, arr) => str + arr.map(item => item.slice(1)).join(" ");
function multiply(){
if( arguments.length === 0 ) {
return 0;
}
let calc = 1;
for(let i = 0, len = arguments.length; i < len; i++){
calc = calc * arguments[i];
}
return calc
}
русскоязычные ресурсы по теме веба? Желательно те, которые обновляются достаточно часто