面经

秦篆大约 1 分钟

一些面试遇到的问题,无关公司。

js基本数据类型

  • 基本数据类型:String、Number、Boolean、Null、Undefined、Symbol

ts中type于interface的区别

  • type可以声明基本类型别名、联合类型、元组等类型
  • interface可以声明合并
  • type和interface都可以扩展,但是type可以扩展基本类型,interface不行
  • type可以使用typeof获取实例的类型,interface不行
  • interface可以定义多个同名的接口,type不行
  • interface可以定义类,type不行
  • interface可以定义声明合并,type不行
  • interface可以定义readonly,type不行
  • interface可以定义implements,type不行
  • interface可以定义extends,type不行

webpack打包less文件时经过了哪几个loader

  • less-loader 说实话,我是真没想到这个问题,一般来说使用时就加载less-loader嘛,他这个我不太明白

webpack打包时,如何实现按需加载

  • 使用import()函数
  • 使用webpack的require.ensure()函数
  • 使用webpack的bundle-loader

为什么在打包时将图片转换为base64

  • 减少http请求
  • 减少图片大小 我能想到的就这些,去百度了一下,也没个正形。

实现一个getParam函数,获取url中的参数

function getParam(url) {
  let obj = {}
  let str = url.split('?')[1]
  let arr = str.split('&')
  arr.forEach(item => {
    let temp = item.split('=')
    obj[temp[0]] = temp[1]
  })
  return obj
}
//当url中存在hash值时,需要同步获取
function getParam(url) {
  let obj = {}
  let str = url.split('?')[1]
  let arr = str.split('&')
  arr.forEach(item => {
    let temp = item.split('=')
    obj[temp[0]] = temp[1]
  })
  if (url.indexOf('#') !== -1) {
    let hash = url.split('#')[1]
    let hashArr = hash.split('&')
    hashArr.forEach(item => {
      let temp = item.split('=')
      obj[temp[0]] = temp[1]
    })
  }
  return obj
}

不知道面试官想要什么答案,我能想到的就是这样。

上次编辑于:
贡献者: lljl500220,luolj