Недавно начал изучать 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
.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
он начал менять лишь справа налево и наоборот