猿问

请教下面这段代码具体如何执行

相关代码

var des = 1; 
var obj = {b: 2}; 

for(var key in obj) {     
    console.log(des, key); // 1, "b"
    des[key] = obj[key];   // ???
    console.log(des[key]); // undefined}

问题

des[key] = obj[key] 这句如何执行? 代码并没有报错, 但des[key]打印结果是undefined

代码来源

function deepCopy(des, src) {    if(!src || typeof src !== 'object') {        return des;
    }    for (var key in src) {        let obj = src[key];        if(obj && typeof obj === 'object') {
            des[key] = des[key] || {};
            deepCopy(des[key], obj);
        } else {
            des[key] = src[key];
        }
    }    return des;
}console.log(deepCopy({a: 1}, {a: {b: 2}}));  // {a: 1}console.log(deepCopy({a: {}}, {a: {b: 2}})); // {a: {b: 2}}


慕无忌1623718
浏览 478回答 2
2回答

呼如林

string是原始数据类型, js原始数据类型是不可被改变的,相对的,引用类型数据是可以被改变,如object
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答