Недавно начал изучать JS и столкнулся с поведением в функции, которое мне не совсем понятно. Как параметр функция принимает массив из хэштегов, среди которых она ищет уникальные, и затем возвращает список таких хэштегов в виде строки (хэштеги разделяет запятая).
const separator = ", ";
function normalizeHashtags(hashtags) {
var uniqueValues = hashtags.filter(function(item, pos) {
return hashtags.indexOf(item) == pos;
});
var normalizedHashtags;
for(var i = 0; i < uniqueValues.length; i++){
if(i == uniqueValues.length - 1){
normalizedHashtags += uniqueValues[i];
} else{
normalizedHashtags += uniqueValues[i] + separator;
}
}
return normalizedHashtags;
}
Значение возвращаемой строки должно выглядеть следующим образом: tag1, tag2, tag3. Но, вместо этого я получал undefinedtag1, tag2, tag3.
Методом проб и ошибок я выяснил, что если строку var normalizedHashtags;
изменить на
var normalizedHashtags = "";, то можно получить желаемый результат. Нужно ли всегда поступать подобным образом и постоянно инициализировать переменные при их объявлении в JS?
Нужно инициализировать переменную перед ее использованием
var normalizedHashtags = "";
значение, которое считывается при операции конкатенации строк, нужно всегда инициализировать. Вы можете не инициализировать переменные (в других случаях), тогда переменная будет принимать значение undefined.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости