6.10 字节跳动面试重点
1.CSS盒模型和百分比对应的对象
所有HTML元素都可以看做盒子,而CSS盒模型本质上是一个盒子,封装周围的HTML元素,定义了一种长方形的盒子,包括各自的内边距padding,外边距margin,边框border,内容content,并根据视觉格式化模型来生成元素,对其进行布置、编排、布局
对于margin和padding,百分比根据父元素的宽计算,对于定位元素,按照父元素的高计算
##1.5 处理Url为对象
function dealUrl(url){ let tmp = url.replace(/[a-zA-Z\/:.0-9]+\?/, ""); //更好的方法是tmp = window.location.search.slice(1); let arr = tmp.split(/[&|#]/); let obj = {} for(let i in arr){ let t = arr[i].split("="); obj[t[0]] = t[1]; } return obj }
2.async的执行顺序
- async声明的函数只是把该函数的return包装了,使得无论如何都会返回promise对象(非promise会转化为promise{resolve}),除此之外与普通函数没有不同,没有特殊待遇。
- await声明只能用在async函数中。当执行async函数时,遇到await声明,会先将await后面紧跟着的内容按照平常的执行规则执行完,执行完后返回一个promise对象,并立即跳出async函数,让出线程,去执行主线程其他内容,等到主线程执行完再回到await处继续执行后面的内容。
3.引用类型和基本类型的区别
1.基本类型的值是不可变的,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,再将新值复制到新变量分配的位置上。而引用类型的值是可变的
2.基本类型的比较是值的比较,值相等则相等,引用类型的比较是堆内存中地址的比较
3.基本类型变量只存放在栈内存区,引用类型同时保存在栈内存和堆内存中