JS面试题【更新中】

  • JS的数据类型有哪些
    基本数据类型(简单数据类型)
    1、string
    2、number
    3、boolean
    4、undefined
    5、null
    6、Symbol
    ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
    由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。
    7、 BigInt
    使用BigInt,应用程序不再需要变通方法或库来安全地表示Number.MAX_SAFE_INTEGERNumber.Min_SAFE_INTEGER之外的整数。
    引用数据类型(复杂数据类型)
    1、object
    2、array
    3、function
    4、data

  • undefined和unll的区别
    1、undefined代表的是未定义,null代表的是空对象
    2、变量声明了但还没有定义时会返回undefined,null一般用来给一些可能会返回对象的变量初始化

  • 基本数据类型和引用数据类型的区别
    1、基本数据类型存放在栈中,引用数据类型存放在堆中
    2、存放基本数据类型存放的是数据的实际值,存放引用数据类型存放的是数据的指针
    3、复制基本数据类型会创建这个值的副本,复制引用类型是复制的指针
    4、判断属于哪种基本数据类型使用typeof,判断属于哪种引用类型使用instanceof

    let a = 1;
    console.log(typeof a);Number
    let b = new Date();
    console.log(b instanceof Date);true
    
  • 为什么instanceof可以判断引用数据类型
    typeof判断数据类型的时候,会直接返回原型链上最后一个对象,而instanceof会去查找原型链上存不存在这个构造函数,存在的话就返回true

  • 什么是递归
    递归就是函数自己调用自己,递归需要有终止条件,否则就会变成死循环

    function test(a = 1) {
      console.log(a);
      a++;
      return a < 10 ? test(a) : "";
    }
    
    test(1);
    
  • JS中this的指向
    1、全局函数指向window
    2、构造函数指向实例对象
    3、对象的方法指向对象
    4、事件处理函数指向事件的对象
    5、定时器函数指向window
    6、箭头函数中不绑定this,定义箭头函数的作用域的this指向谁它就指向谁
    7、apply调用this指向apply方法的第一个参数
    8、立即执行函数指向window

  • 什么是闭包
    理解闭包首先要理解js垃圾回收机制,就是当一个函数被执行完后,其作用域会被回收,如果形成了闭包,执行完后其作用域就不会被回收。如果某个函数能访问其他函数内的变量,就会形成闭包。闭包的作用就是延伸了变量的作用范围(被访问的变量所在的函数我们就称为闭包)

  • 什么是原型链
    JS是面向对象的,每一个实例对象都会有一个_proto_属性,该属性指向构造函数的prototype原型对象。当一个对象查找一个属性时,如果自身没有,就会通过_proto_向原型上查找,如果原型上没有,就会向原型的原型继续查找,直到查找到Object.prototype._proto_为null,这样就形成了原型链

  • 实现继承的方法有哪些
    1、原型链继承
    2、构造函数继承
    3、组合继承
    4、寄生组合继承
    5、es6中的class类继承

  • 什么是事件捕获
    先触发父元素的事件,再触发子元素的事件

  • 什么是事件冒泡
    先触发子元素的事件,再触发父元素的事件

  • 什么是事件委托,这样做有什么好处

  • 如何阻止事件冒泡和默认事件

  • 什么是同源策略
    协议相同,域名相同,端口相同,则视为同源,三者中的任何一个不相同都不是同源,如果不是同源则会产生跨域问题

  • 如何解决跨域问题
    1、cors解决
    2、jsonp解决
    核心原理:利用script标签的src属性来发送请求,因为跨域只对ajax有限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值