常见前端问题合集

说说你对语义化的理解?

1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构
2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

对BFC规范的理解?

  BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠。
(W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用。)

请写出你对闭包的理解,并列出简单的理解 ?

使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

闭包有三个特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收

yield

相当于一个迭代器,初始化好之后调用next()方法迭代,值并不能保存,在第一次调用可以传空值,以后的需要传入上次yield的值。如下:

function *foo(x){
var y=2*(yield(x+1));
//第一次调用后返回x+1=6
var z=yield(y/3);
//第二个it.next(12)表示上一个yield的返回结果是12,带进去也就是var y=2*12; 这个地方必须带值,因为yield内是表达式(x+1),不是常量,
//无法自己计算,这里为什么不把之前的x缺省带进去计算,只能说目前的机制不是这样
return (x+y+z);
//第三次调用后返回x+y+z,且done=true,因为迭代完成
}
 
var it=foo(5); //初始化x为5
console.log(it.next()); //{value: 6, done: false}
console.log(it.next(12)); //{value: 8, done: false}
console.log(it.next(13)); //{value: 42, done: true}

引用自:对ES6的yield示例分析

position定位终极解决方案

常见前端问题合集_第1张图片
position定位.png

@ is an alias to /src

https://blog.csdn.net/ChenXvYuan_001/article/details/86108813

你可能感兴趣的:(常见前端问题合集)