JS前端面试题

本文总结了JS前端面试中的常见问题,包括闭包、深度拷贝与浅拷贝的区别、对象判断、DOM事件流、数组操作、浏览器存储、this指向及其改变、防抖与节流的概念与区别、DOM和BOM API、变量声明的区别、循环差异、数据类型的判断、axios封装等,帮助开发者全面复习和准备前端面试。
摘要由CSDN通过智能技术生成

一、闭包是什么? 

含义:函数里面包函数,内层函数可以访问外层函数的的变量

作用:

1.保护内部的私有变量:保护内部的数据不被外部访问,同时也可以避免全局变量的污染。通过在闭包中定义私有变量和函数,可以确保这些变量和函数只能在闭包内部被访问和修改,从而保护数据的完整性和安全性。

2.实现模块化编程:闭包可以用于实现模块化编程,将代码划分为独立的模块,每个模块都有自己的作用域和生命周期。这样可以提高代码的可维护性和可重用性,同时也可以避免全局变量的污染和命名冲突等问题

使用场景:

比如说回调函数,还有按钮的节流,频繁点击的时候,只要在规定的事件内检测到设置的flag还是没改变,则直接返回啥也不做,或设置按钮状态为disabled也可以

2、深度拷贝和浅拷贝


什么是深拷贝:深拷贝会开辟新的栈,两个对象对应两个不同的地址,修改A,B不会跟着改变
实现方式:
递归
JSON.stringify()
$.extend()

什么是浅拷贝:浅拷贝复制的是对象的引用地址,没有开辟新的栈,复制的两个对象都指向同一个地址,修改其中一个对象的属性,另外一个也会跟着改变。
实现方式:
(1)Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
(2)slice() 
(3)concat() 


区别:
(1)直接区别:浅拷贝就是双方不是独立的,还会互相影响;深拷贝是不会影响到彼此,是独立的个体;
(2)内在区别:浅拷贝就是简单的把指向别人的值的一个指针给复制过来,深拷贝就是实实在在的把别人的值给复制过来
注:拷贝基本数据类型(number、string、boolean、null、Undefined)用深拷贝,引用数据类型(Object , Array, Function)用浅拷贝


例如:
    var a = 6;
    var b = a;
    a = 9;
    console.log(a, b);//9 6
    //深拷贝:重新开辟一个空间,改变a,b不改变

    const a1 = [3, 6, 9];
    const b1 = a1;
    console.log(b1);
    a1[0] = 6;
    console.log(a1, b1);//[6,6,9] [6,6,9]
    //浅拷贝:公用同一个地址,a1改变,b1也跟着改变

3、如何判断空对象?如何区分数据


在 JavaScript 中,可以使用 typeof 运算符来判断变量的类型。
(1)判断空对象(null)
var obj = null;
if (obj === null) {
console.log("这是一个空对象");
} else if (typeof(obj) !== "object"){
console.log("这不是一个对象");
} else {
console.log("这是一个非空对象");
}
(2)判断未定义或者为 undefined 的值
var value; // 未定义的变量
 
 
console.log(value); // 输出undefined
// 也可以通过 typeof 进行判断
if (typeof(value) === "undefined") {
console.log("这是一个未定义的值");
} else {
console.log("这是一个已经定义了的值");
}



4、Dom事件流的顺序? 什么是事件


顺序:从最底层一直往上:div----->body----->html----->document
事件可以理解为:1,操作触发,比如按下开机键电脑就开机了;2,状态的变化,比如天黑了就要急着回家。
浏览

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值