面经
大约 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
}
不知道面试官想要什么答案,我能想到的就是这样。