map和forEach的区别? forEach(): 针对每一个元素执行提供的函数(executes a provided function once for each array element)。 map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来(creates a new array with the results of calling a provided function on every element in the calling array)。 区别: forEach()返回值是undefined,不可以链式调用;map()返回新的数组,可以链式调用(arr.map(item=>item*2).filter(item=>item>5)) 没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();
自己实现map函数
1 2 3 4 5 6 7
function myMap(fn){ var newArr = []; for(let i=0;i<this.length;i++){ newArr.push(fn(this[i],i,this)) } return newArr; }
函数防抖与函数截流
延伸:自定义实现数组中的方法
1 2 3 4 5 6
//实现forEach function myForEach(fn){ for(let i=0;i<this.length;i++){ fn(this[i],i,this) } }
var a = window.a = "welcome to Here"; function hello(){ console.log(a); function a(){ } var a = 'soho'; console.log(a); console.log(b); let b = 'xxhashka'; } hello();
BFC(块级格式化上下文) A. 内部的 Box 会在垂直方向,一个接一个地放置。 B. Box 垂直方向的距离由 margin 决定。属于同一个 BFC 的两个相邻 Box的margin 会发生重叠。 C. 每个元素的 margin box 的左边, 与包含块 border box 的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。 D. BFC 的区域不会与 float box 重叠。 E. BFC 就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。 F. 计算 BFC 的高度时,浮动元素也参与计算。 2)哪些元素会生成 BFC: A. 根元素 B. float 属性不为 none C. position 为 absolute 或 fixed D. display 为 inline-block, table-cell,table-caption, flex, inline-flex E. overflow 不为visible