console.log(dateId); //wyrzuca „date1” mimo inkrementacji
W JavaScript dane typu primitive przekazywane są poprzez kopię a nie referencje (jak w przypadku obiektów) - co oznacza, że jeśli przypiszesz wartość zmiennej A do zmiennej B, po czym zmienisz zmienną A, to zmienna B pozostanie nietknięta (kopiowanie nie mutuje zmiennej).
http://www.2ality.com/2011/03/javascript-values-not-everything-is.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
Przykład:
var a = 2;
var b = a;
a = 4;
console.log( a ); // 4
console.log( b ); // 2
Tworzysz zmienną, potem przypisujesz jej wartość do innej zmiennej, zmieniasz wartość pierwotnej zmiennej a zmienna, do której ją przypisałeś nie zmienia swojej wartości.
Co innego, gdy zrobisz podobnie na obiekcie:
var obj = { name: 'John' };
var clonedObj = obj;
obj.name = 'Ben';
console.log( obj ); // { name: "Ben" }
console.log( clonedObj ); // { name: "Ben" }
Tutaj mamy do czynienia z mutacją, czyli zmianą wartości (właściwie to pola, bo działamy na obiekcie).
To samo dotyczy tablic, które są elementami obiektopodobnymi (obiektopodobne, bo mają swoje metody, ale w tablicy poruszasz się po indeksie - obiekt "udostępnia" Ci klucz):
var arr = [ 1, 2, 3 ];
var clonedArr = arr;
arr[ 2 ] = 8;
console.log( arr ); // [1, 2, 8]
console.log( clonedArr ); // [1, 2, 8]
Również tutaj, zmieniasz "wnętrzności" tablicy zarówno dla pierwotnie przypisanej zmiennej, jak i tej pomocniczej.
Co do Twojego pytania - jeśli chcesz zinkrementować wartość liczbową, a następnie ją przypisać do stringa, to w wyniku konkatenacji otrzymasz Twoją zmienną np. "wiek10" + 6 = "wiek106". Mógłbyś najpierw wydłubać liczbę ze swojej zmiennej - zinkrementować ją, bądź zmienić wartość i z powrotem ją w tym wyrazie umieścić, czyli:
var num = 10;
var age = 'wiek' + num;
var firstNumIndex = age.split( '' ).findIndex( function( elem ) { // podziel stringa na pojedyncze znaki
return Number( elem ); // zwroc pierwszy napotkany indeks, jesli to bedzie liczba
} );
age = age.slice( -age.length, firstNumIndex ); // usun liczbe, ktora zaczyna sie od znalezionego indeksu
num++; // inkrementuj
age += num; // dopisz zinkrementowana liczbe do pierwotnego wyrazu w zmiennej
console.log( age ); // "wiek11"