常见前端问题合集

作者: areil2me | 来源:发表于2019-04-02 17:14 被阅读11次

    说说你对语义化的理解?

    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示例分析

    相关文章

      网友评论

        本文标题:常见前端问题合集

        本文链接:https://www.haomeiwen.com/subject/prumbqtx.html