web前端常见面试题整理(JS)

JS

1.JS基本数据类型

Number String boolean null undefined Object
null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。

2.typeof的返回值类型
  • number:NaN
  • boolean
  • string
  • undefined:undefined 不存在的变量
  • object:对象,数组,null
  • Function:Array Date
  • symbol:typeof Symbol() // ES6提供的新的类型
3.操作数组的方法
  • shift:从数组中把第一个元素删除,并返回这个元素的值。
  • unshift:在数组的开头添加一个或更多元素,并返回新的长度
  • push:在数组的末尾添加元素,并返回新的长度
  • pop:把数组的最后一个元素删除,并返回该元素的值
  • slice:读取数组指定的元素,不会对原数组进行修改
  • splice:操作数组指定的元素,会修改原数组,返回被删除的元素
  • concat reverse join split sort
4.操作字符串的方法
  • charAt(index):返回指定索引处的字符串
  • concat(str1,str2,…):连接多个字符串,返回连接后的字符串的副本
  • indexOf(str):返回str在父串中第一次出现的位置,若没有则返回-1
  • match(regex):搜索字符串,并返回正则表达式的所有匹配
  • replace(str1,str2):str1也可以为正则表达式,用str2替换str1
  • substr(start,length):从字符索引start的位置开始,返回长度为length的子串
  • substring(from,to):返回字符索引在from和to(不含)之间的子串
  • search(regex):基于正则表达式搜索字符串,并返回第一个匹配的位置
  • valueOf():返回原始字符串值
5.JS有哪些内置对象
  • 数据封装类对象:Object、Array、Boolean、Number、String
  • 其他对象:Function、Arguments、Math、Date、RegExp、Error
  • ES6新增对象:Symbol、Map、Set、Promises、Proxy、Reflect
6.函数声明和函数表达式的区别

函数声明有变量提升,现代浏览器不会对if语句中的函数声明进行提升
函数声明的自执行必用()将函数声明括起来后自执行,函数表达式可以直接自执行

7.JavaScript的原型,原型链?有什么特点?
  • 每一个js对象(除了null)都有_proto_内部属性,这个属性会指向该对象的原型

  • js中每个函数除了_proto_之外,还预置了prototype属性,当函数对象作为构造函数创建实例时,该prototype属性值将被作为实例对象的原型_proto_

  • 每个原型都有一个 constructor 属性指向关联的构造函数 实例原型指向构造函数

  • prototype属性的作用就是包含可以由特定类型的所有实例共享的属性和方法,也就是让该函数所实例化的对象们都可以找到公用的属性和方法
    Person === Person.prototype.constructor
    person.proto === Person.prototype
    Object.prototype.proto === null

你可能感兴趣的:(javascript,前端面试题)