# 面试汇总

面试题也是一种整理知识的方式。

扩展阅读:https://github.com/lietoumai/Awesome-offer (opens new window)

# 一些有意思的代码

[].forEach.call($$("*"), function(el){
  el.style.outline = "1px solid #" + (~~(Math.random()*(1<<24))).toString(16);
})
1
2
3

解释:获取页面所有的元素,遍历这些元素,为它们添加1像素随机颜色的轮廓(outline)

  1. $$(sel) // $$函数被许多现代浏览器命令行支持,等价于 document.querySelectorAll(sel)
  2. [].forEach.call(NodeLists) // 使用 call 函数将数组遍历函数 forEach 应到节点元素列表
  3. el.style.outline = "1px solid #333" // 样式 outline 位于盒模型之外,不影响元素布局位置
  4. (1<<24) // parseInt("ffffff", 16) == 16777215 == 2^24 - 1 // 1<<24 == 2^24 == 16777216
  5. Math.random()*(1<<24) // 表示一个位于 0 到 16777216 之间的随机浮点数
  6. ~~Math.random()*(1<<24) // ~~ 作用相当于 parseInt 取整
  7. (~~(Math.random()*(1<<24))).toString(16) // 转换为一个十六进制-
上次更新: 2021-07-26