js常见面试题

 1.深拷贝和浅拷贝的区别:

     就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝。


2.什么是递归函数:

   当一个函数的函数内部又调用了该函数那么这就是递归函数,递归函数的特点是必须有一个出口,否则会形成死递归。并且有进有出,先进后出

3.js的this指向问题:

如果在js中直接使用this,那么this指向就是window
如果在函数中使用this,那么this指向就是window
如果在事件中使用this,那么this指向就是绑定该事件的元素
如果在方法中使用this,那么该方法是哪个对象的方法,this指向就是那个对象
如果在定时器中使用this,那么this指向就是window
如果在箭头函数中使用this,那么this会向上级寻找对象,this指向就是上级的对象

4.call,apply,bind的区别:

   call,apply,bind这三者的作用都是改变this指向;且他们三个中第一个数都是this值

    区别:call在传值时,得以参数列表的形式传值,也就是须得以逗号隔开每一个数值,会立即调用

   apply在传第二个值时,必须得以数组形式传值,虽然他是以数组传值,但是在执行时,数组中的值时一个一个拿出来的

   bind 在传值方式上与call一样,但是bind他本身不会被调用,须得添加手动调用方式

5.什么是柯里化:

   把一个多参数的函数转化为单参数函数的方法。

   柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)

  柯里化不会调用函数。它只是对函数进行转换。

6.javascript中有个概念叫做副作用,副作用指的是什么

     所谓"副作用"(side effect),指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。

7.什么是数据劫持,数据劫持有什么作用,如何实现数据劫持?

    在JavaScript中,数据劫持是一种修改或拦截数据访问的技术。它可以用于在访问数据时执行额外的操作,例如验证、转换或监听数据的变化。数据劫持通常与对象的属性相关联。

    数据劫持的作用有几个方面:
      1. 数据验证:可以通过劫持数据访问,验证数据的有效性,确保满足特定的条件。
      2. 数据转换:可以在获取或设置数据时,对数据进行转换,例如将数据格式化为特定的格式。
      3. 数据监听:可以追踪数据的变化,一旦数据发生变化,可以触发相关的操作,例如更新UI或执行其他逻辑。

实现数据劫持的一种常见方法是使用`Object.defineProperty`方法。它允许你定义一个对象的属性,并指定访问该属性时的各种行为。


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值