本篇文章是前端基础练习题第二十九天的答案及解析部分,纯题目部分请移步前端基础练习题 第29天
正文
1.试利用JS代码在body
中生成16个div
,每个div
的宽高为60 * 60
px,里面内容为1-16自身序号,背景颜色为红橙蓝绿随机显示,布局为4行4列排列,具体如下图所示:
参考代码如下所示:
1 | // CSS部分 |
1 | // JS部分 |
本题目主要利用定位,通过改变元素的top
和left
的位置,使其呈现规律的排布。随机背景方面,用到了随机数,即Math.random()
的相关知识。
在数组开头添加元素应使用unshift()
方法,可添加一或多个;移除数组中的第一个元素应使用shift()
方法;在数组末尾添加元素应使用push()
方法,可添加一或多个;移除数组中的最后一个元素应使用pop()
方法。
3.在JS中,如何让a == 1 && a == 2 && a == 3
这个表达式返回true
?
本题利用了隐式转换,当对象/数组进行比较时,会调用toString
和valueOf
方法,通过修改这两个方法,就可以自定义转换时的返回值。
a === 1 && a === 2 && a === 3
这个表达式返回true
?可利用劫持getter
的知识来设计,代码如下所示:
1 | var i = 1; |
本题利用了劫持getter
的知识,当访问变量a
时,就会调用get
方法,使其自增,下一次访问a
时,a
的值已经被修改过了。
1 | function a(b) { |
此题涉及到变量声明提升和函数声明优先的知识点。在函数体内,函数声明被提升到了顶部,故第一次输出的为函数,后面的变量赋值又覆盖了函数声明,故后续的访问值都为22
。
浏览器对网页的渲染过程为:
- 解析
HTML
以构建DOM
(DOM树
),并行请求CSS/JS/image
等 CSS
文件下载完成,构建CSSOM
(CSS树
)CSSOM
构建结束后,和DOM
一起生成渲染树(Render Tree
)- 布局(
Layout
),计算出每一个节点在屏幕中的位置 - 显示(
Painting
),通过显卡将页面显示到屏幕上
7.试简述重绘与回流的区别和关系。
重绘(repaint
)是指当渲染树中的元素部分属性发生变化,如颜色、透明度等不会引起布局变化而重新渲染的过程;回流(reflow
)是指当渲染树中的元素布局发生改变而需要重建的过程。回流必将引起重绘,而重绘不一定会引起回流。
说明
题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击前端基础练习题 第29天