如何在研究深拷贝时,敲完代码控制台报错说ff对象未定义,检查了一下和博主敲得代码一样的啊,百度了有些是说把js代码放在后面?

在研究深拷贝时,敲完代码控制台报错说 f f 未定义,没有拷贝成功 ,检查了一下和博主敲得代码一样的啊,百度了有些是说把js代码放在后面,但是试过还是不行

  function deepClone(source){
        //source是要转的值
        //构造器的指向:[]=> Array(基类) {}=> Object
        const targetObj = source.constructor === Array ? [] : {};
        //通过constructor 判断是数组还是对象
        for(let keys in source){
            //判断他有没有这个属性
            if(source.hasOwnProperty(keys)){
                //当前循环的值可能有哪几种情况
                //keys=>3
                    //引用数据类型
                if(source[keys] && typeof source[keys] === 'object'){
                    targetObj[keys] = source[keys].constructor === Array ? [] : {};
                    //递归,一遍一遍直到查完为止
                    targetObj[keys] = deepClone(source[keys])
                }else{
                    //基本数据类型,直接赋值
                    targetObj[keys]= source[keys];
                }

            }
        }
    }
    let objC={
        ff:'name',
        gg:1,
        obj:{str:'111',age:12},
        arr:[1,2,3,4]
    }
    let newObjC=deepClone(objC);
    newObjC.ff ="花花";
    newObjC.arr.push("火火");
    console.log(objC,newObjC);

你的deepClone没有return targetObj,所以newObjC是undefined