Помогите разобраться (javascript)
всем привет помогите разобраться в коде, который приведен ниже.
var employers = ['Alex', '', 'ludmila', 'Viktor', '', 'oleg', 'iNna', 'Ivan', 'Alex', 'Olga', ' Ann'];
var employersNames = [];
for (var i = 0; i < employers.length; i++) {
if (employers[i].length > 0 && employers[i].length != '') {
employersNames.push(employers[i]);
}
}
for (var i = 0; i < employersNames.length; i++) {
employersNames[i] = employersNames[i].toLowerCase().trim();
}
var sponsors = {
cash: [40000, 5000, 30400, 12000],
eu: ['SRL', 'PLO', 'J&K'],
rus: ['RusAuto', 'SBO']
};
function calcCash(own) {
own = own || 0;
var everyCash = Array.prototype.slice.call(arguments);
var total = own;
for (var i = 0; i < everyCash[1].length; i++) {
total += +everyCash[1][i];
}
return total;
}
var money = calcCash(null, sponsors.cash);
function makeBusiness(owner, director, cash, emp) {
director = director || 'Victor';
var sumSponsors = sponsors.eu.concat(sponsors.rus, 'unexpected sponsor');
console.log('We have a business. Owner: ' + owner + ', director: ' + director + '. Our budget: ' + cash + '. And our employers: ' +
emp);
console.log('And we have a sponsors: ');
console.log.apply(null, sumSponsors);
console.log('Note. Be careful with ' + sponsors.eu[0] + ". It's a huge risk.");
}
makeBusiness.apply(null, ['Sam', null, money, employersNames]);
интересуют следующие строки кода:
var everyCash = Array.prototype.slice.call(arguments);
for (var i = 0; i < everyCash[1].length; i++) {
total += +everyCash[1][i];
не понимаю от слова совсем. можете подробнее объяснить создание двумерного массива?
Ответы (1 шт):
arguments - все аргументы переданные в функцию, в данном случае мы передаем два аргумента var money = calcCash(null, sponsors.cash); null и массив с деньгами.
null в функции calcCash преобразуется в ноль own = own || 0;
далее мы преобразуем arguments в js массив (arguments сам по себе массивом не является) таким способом
var everyCash = Array.prototype.slice.call(arguments);
теперь в everyCash хранится массив аргументов функции [0, sponsors.cash]
а далее мы просто суммируем 0 и все значения sponsors.cash
var total = own;
for (var i = 0; i < everyCash[1].length; i++) {
total += +everyCash[1][i];
}
return total;
и получаем сумму спонсорских вкладов (точно не знаю, что значат эти числа).
первый аргумент функции calcCash - это, видимо, начальная сумма, которая у нас уже есть, она может быть нулевой как в примере