var toCapitalize = function(str) { // функция переводит каждый первый символ слова к верхнему регистру
var i, result; // обьявление переменной счетчика и финальной строки
if (typeof str !== 'string') { // если переданный аргумент не строка, то...
console.log('It\'s not string!'); // выводим: это не строка!
} else { // иначе
for (i = 0; i < str.length; i++) { // запускаем цикл for, пока не закончится строка
if (str[i] !== ' ') { // если символ строки не содержит пробел, то...
i !== 0 ? result += str[i] : result += str[i].toUpperCase();
} else { // а если пробел, то...
result += str[i]; // прибавим этот символ к финальной строке
result += str[i + 1].toUpperCase(); // прибавим следующий символ к строке, с верхним регистром
i++; // так как обработали следующий символ, пропускаем следующую итерацию, увеличивая счетчик
}
}
}
return result; // в конце всех манипуляций, возвращаем финальную строку
};
var func = function(f) { // внешняя функция
if (f !== undefined) { // если аргумент был передан, то...
console.log(toCapitalize(f)); // callback: выводим результат функции с переданным аргументом в консоль
} else { // иначе
console.log('You don\' write a string!'); // выводим в консоль: ты не написал строку!
}
};
func('some string for you'); // вызываем функцию с произвольной строкой
// результат выполнения функции: undefinedSome String For You
/* извините, что слишком много комментариев, я их добавил для удобства чтения,
обьясните пожалуйста почему выводит undefined в начале значения выражения вызвова функции*/