Array vs String - Mutability, Cloning and Corruption
So, strings are immutable. Arrays are mutable and passed by references. Arrays should be cloned into local variables.
by jshacker
JavaScript
var sma = "Anubhav";
function string_mutable_action(str){
console.log(str);
str = str.split('').reverse().join('');
console.log(str);
}
string_mutable_action(sma);
var sima = "Saini";
function string_immutable_action(str){
var astr = str;
console.log(astr);
astr = astr.split('').reverse().join('');
console.log(astr);
}
string_immutable_action(sima);
/* above: this gives a view that strings are immutable. */
var ama = sma.split('');
function array_mutable_action(arr){
console.log(arr);
arr = arr.reverse();
console.log(arr);
}
array_mutable_action(ama);
var aima = sima.split('');
function array_immutable_action(arr){
var aarr = arr;
console.log(aarr);
aarr = aarr.reverse();
console.log(aarr);
}
array_immutable_action(aima);
/* above: gives us feeling that mutability runs crushing everything */
/* what about cloning */
var cma = sma.split('');
function cloned_mutable_action(ar){
var aar = ar.clone();
console.log(aar);
aar = aar.reverse();
console.log(aar);
}
cloned_mutable_action(cma);
var cima = sima.split('');
function cloned_immutable_action(ar){
var aar = ar.clone();
console.log(aar);
aar = aar.reverse();
console.log(aar);
}
cloned_immutable_action(cima);