前端面试题详解整理58|手写深拷贝遍历多层次对象 ,react hooks用过什么 useEffect什么用

31 阅读3分钟

阿里面经前端一面

1、自我介绍
2、最近的项目
3、为什么想做前端
4、原型链
5、this
6、深浅拷贝

7、手写深拷贝遍历多层次对象

下面是一个简单的递归函数,用于实现深拷贝:

function deepCopy(obj) {
    // 如果是基本类型或者 null,则直接返回
    if (typeof obj !== 'object' || obj === null) {
        return obj;
    }

    // 创建一个新的对象或者数组
    const result = Array.isArray(obj) ? [] : {};

    // 遍历原始对象的每一个属性或者元素
    for (let key in obj) {
        // 如果属性是对象,则递归调用 deepCopy
        if (typeof obj[key] === 'object') {
            result[key] = deepCopy(obj[key]);
        } else {
            // 否则直接复制
            result[key] = obj[key];
        }
    }

    return result;
}

使用这个函数可以对多层次的对象进行深拷贝,它会遍历对象的每一个属性或者数组的每一个元素,并递归调用自身来实现深拷贝。需要注意的是,这个函数只适用于处理普通的对象和数组,对于特殊对象(如函数、正则表达式、Date等),需要根据具体情况进行特殊处理。

示例用法:

const obj = {
    a: 1,
    b: {
        c: 2,
        d: [3, 4, 5]
    }
};

const copyObj = deepCopy(obj);
console.log(copyObj); // 输出一个与 obj 结构相同的深拷贝对象

需要注意的是,这个函数在处理循环引用的情况时会陷入死循环,因此在实际使用时需要做额外的判断和处理。

8、react hooks用过什么 useEffect什么用

在React中,useEffect是一个常用的Hook,用于处理副作用。副作用通常是指与组件渲染无关的操作,比如数据获取、订阅事件、手动修改DOM等。useEffect可以在函数组件中执行副作用操作,并且可以在组件的每次渲染之后执行。 useEffct可以再函数族组件当中执行副作用操作,可以再组件的每次渲染之后执行,

以下是useEffect的基本用法:

import React, { useState, useEffect } from 'react';

function MyComponent() {
    const [count, setCount] = useState(0);

    // 使用 useEffect 进行副作用操作
    useEffect(() => {
        // 在组件渲染后执行的副作用操作
        console.log('Component has been rendered');
        
        // 可以在这里执行一些副作用操作,比如订阅事件、数据获取等

        // 返回一个清除函数,在组件被销毁时执行清理操作
        return () => {
            console.log('Component will be unmounted');
            // 在这里执行一些清理操作,比如取消订阅、清除定时器等
        };
    }, []); // 第二个参数为空数组,表示只在组件挂载和卸载时执行

    return (
        <div>
            <p>Count: {count}</p>
            <button onClick={() => setCount(count + 1)}>Increment</button>
        </div>
    );
}

export default MyComponent;

在这个示例中,我们使用useEffect来执行一些副作用操作,比如打印日志。useEffect接受一个函数作为参数,在函数内部可以执行副作用操作,并且可以返回一个清除函数,用于在组件被销毁时执行清理操作。在第二个参数中,我们传入了一个空数组,表示只在组件挂载和卸载时执行副作用操作。如果想在每次组件渲染时都执行副作用操作,可以省略第二个参数或者传入一个包含需要监视的变量的数组。

总的来说,useEffect是React Hooks中用于处理副作用操作的重要工具,可以在函数组件中执行各种与渲染无关的操作,并且具有很好的灵活性和可控性。

2023.2.13 30分钟
面试前要调好摄像头 以为电话面结果手忙脚乱
项目要理清楚 逻辑通顺有重点
多敲代码

作者:在刷题的螺狮粉很活跃
链接:www.nowcoder.com/feed/main/d…
来源:牛客网