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);