js-pro-review1

前言:3月份到了实习内推的节点,寒假回家没有好好准备,于是来到学校后看到铺天盖地的实习内推信息就心急如焚。上个学期准备的JS基础、HTTP、CSS属性又忘了好些。直接看面经感觉有点虚,重新看书时间又不够。权衡了下还是感觉应该以夯实基础为主,保持技术路线的可持续发展。也许会错过一些内推的机会,但对之后的面试会有许多好处。这篇笔记主要记录上周所复习的JS高程以及CSS中的一些知识要点。

  1. 什么是闭包?
    闭包是指函数以及其被定义的词法环境的集合。譬如当我们在函数A里定义函数B,辣么根据作用域B可以访问A的活动对象,只要函数B一直保持着对A的活动对象的引用,A的活动对象就不会被销毁。
    注意每次执行一个包含闭包的函数,都会产生一个新的词法作用域;而在同一个词法作用域里产生的闭包函数,引用的都是同一个活动对象。
    比较好的文章:https://stackoverflow.com/questions/111102/how-do-javascript-closures-work

  2. 作用域的理解?
    作用域一般指函数可访问的变量的集合。
    JavaScript中没有块级作用域,但ES6中的let和const等关键字可以将变量绑定在块级作用域中。

  3. this的绑定?
    JS中this绑定利用四条规则(默认绑定、隐式上下文绑定、显示绑定、new绑定)。但ES6中的箭头函数的绑定不利用这四条规则,箭头函数的this继承外层函数调用的this绑定,且无法被修改。

  1. 回调函数。
  1. BFC是什么,有什么作用?
    BFC是指Block Formatting Context,块级格式化上下文,它是一个独立的渲染区域。
    只有Block-level box参与,规定了内部Block-level Box的布局方式,并且与外部区域毫不相干。
    block-level box为display属性为block,list-iten,table的元素。
    相对的inline-level box为display属性为inline,inline-block,inline-table的元素。
    BFC的规则包括:
    (1)内部的box垂直放置。
    (2)box垂直方向的距离由margin决定,属于同一个BFC的两个相邻box的margin会发生重叠,与包含块的border box相接触。
    (3)BFC的区域不会与float box重叠。
    (4)BFC就是页面上一个隔离的独立容器,与外界互不影响。
    (5)计算BFC的高度时,浮动元素也参与计算。
    因此按照上列规则可以用来清除浮动,避免边距重叠,以及制造两行排版。

  2. containing box的理解?
    (1)position属性为static和relative的元素其包含块为父元素的content-box。
    (2)position属性为absolute的元素其包含块为父元素的padding-box。
    (3)position属性为fixed的元素其包含块为viewport。
    (4)如果 position 属性是 absolute或fixed,包含块也可能是由满足以下条件的最近父级元素的内边距区的边缘组成的:transform或perspective不为none,或filter不为none。
    作用:当元素的宽高为百分数时,是基于containing box的宽高来计算。详细为hight、top、bottom基于包含块的高来计算,width、margin、padding等基于包含块的宽来计算。
    注意:当元素的高设置为百分数,而父元素的高度由内容决定,且position为static或relative时,该元素的高度为0。