Here is my following code block. I am passing my val object from function test1 to test2 and modify its value in test2 and send it back.
var Promise = require("bluebird");
var list = [1,2,3];
var test1 = function(test) {
    return new Promise(function(resolve,reject) {
        var val = {"name" : "my_name","age" : 25};
        for (var item in list) {
            (function (item) {
                console.log("val",val);
                test2(val)
                    .then(function(test2Response) {
                        console.log("test2Response",test2Response)
                    });
            })(item)
        }
    });
};
var test2 = function(val1) {
    return new Promise(function(resolve,reject) {
        console.log("val1",val1)
        val1.name = val1.name + "_1"
        resolve(val1)
    })
}
test1()
And here is my value of my variables valand val1 at various stages.
val { name: 'my_name', age: 25 }
val1 { name: 'my_name', age: 25 }
val { name: 'my_name_1', age: 25 }
val1 { name: 'my_name_1', age: 25 }
val { name: 'my_name_1_1', age: 25 }
val1 { name: 'my_name_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
I couldnt understand why the value of val changes for every iteration even though I update only val1 not val. How can I maintain the val intact and modify only 'val1`?
 
     
    