常红达
常红达
BFC:块级格式化上线文,Block fromatting context 的缩写,BFC是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level box如何布局,并且与这个区域的外部毫无关系。 1,如何创建BFC 不是所有的元素模式都能产生BFC,w3c规定只有display为block,list-item,table的元素会产生BFC。 让元素产生BFC的触发条件有:1,float属性不为none;2,position属性为absolute或者fixed;3,display为inline-block,table-cell,table-caption,flex,inline-flex,overflow不为visible,最常用的是overflow:hidden。 2,BFC的用途:1,清除浮动;2,解决外边距合并的问题;3,制作右侧盒子自适应。 3,BFC的原理 1,在BFC内部盒子垂直的从顶部一个一个的排序; 2,盒子垂直方向的距离由margin决定,属于同一个BFC的两个盒子的margin会发生重叠; 3,在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘; 4,BFC的区域不会与浮动的盒子产生交集,而是紧贴浮动边缘; 5,计算BFC的高度时,自然也会检测浮动盒子的高度,它是一个独立的渲染区域。
1,js中有6中数据类型:string,boolean,number,null,undefined,object,ES6新增了symbol。 2,null本身不是对象,typeof null === 'object’,是语言本身的一个bug。其原理是不同的对象在底层都是用二进制来表示的,在js中二进制前3位是0即判断是为对象,null的二进制表示是全0,即前三位都是0,所以执行typeof返回的是object,实际上null为基本数据类型。 3,(1)基本数据类型的值存在栈中,复杂数据类型在栈中存的是地址,其真正的值存在堆中。 (2)当基本数据类型作为参数传给函数时,函数对其改变不会改变外面的值,复杂数据类型作为参数时,函数内部对参数值的修改会改变外部变量的值。
1,有利于SEO;2,便于维护和理解;3,方便在其他设备如盲人屏幕阅读器上解析;4,有利于浏览器的解析;5,给用户更好的浏览体验。
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数在所在词法作用域外执行。 闭包的作用:可以创建一个封闭的环境;使变量一直存在于内存中。
var value = 0; Object.defineProperty(window,'a',{ get:function(){ return this.value += 1; } }) console.log(a== 1 && a==2 && a==3);//true
首先this并不会指向函数本身。 1,当函数在没有任何修饰的情况下调用,非严格模式下,this指向window,严格模式下this指向undefined。(默认绑定) 2,当函数由一个对象引导调用时,this指向该对象。(隐式绑定) 3,函数通过apply,call,bind绑定时,this指向绑定的对象。(显式绑定) 4,当函数被当做构造函数使用,又new引导调用时,this只想new创建出来的对象。(new绑定); 其优先级为:new绑定 > 显示绑定 > 隐式绑定 > 默认绑定; 箭头函数其this取决于函数定义时所在的上下文。