1.map和filter有什么区别?

map:可以遍历指定的数组,执行回调函数,将其执行结果存储在map函数内部所创建的数组中,最终将数组返回。
filter:执行传入的回调函数,如果函数的执行结果为true,就会将当前元素存储到filter函数内部所创建的数组,最终返回
map和filter都会返回一个新数组,并不改变原数组。
map返回的是return的结果,而不是数组中的元素,数组长度与原数组长度相同;filter返回的是对原数组的过滤结果,其元素还是原数组中的元素,而长度很有可能发生变化。
如果想提取出数组中的某个属性或者判断数组中所有元素是否满足某个条件,可以使用map,如果是想对原数组进行过滤,使用filter。

2.块,行内,行内块元素

行内元素(内联函数):span, a, strong, em, del, ins,
在一行上显示,不能直接设置宽高;元素的宽高就是内容撑开的宽高。
块元素:div, h1-h6, p, ul, li
独占一行,可以设置宽高;在嵌套/包含下,子块元素宽度(没有定义情况下)和父块元素宽度一致
行内块元素:input, img, textarea , select, object
在一行上显示,也可以设置宽高

行内元素转块元素:display: block 。行内元素配置后,会拥有块元素的所有属性。
块元素转行内元素:display: inline 。同上,不再有设置宽高的属性,也不独占一行。
块,行内元素转行内块元素:display : inline-block。

3.原型链

实例对象与原型之间的连接,叫做原型链。
JS在创建对象时,都有一个叫做proto的内置属性,用于指向创建该对象的函数构造器的原型prototype
prototype是函数的原型对象,会被对应的__proto__引用。
(1)每个对象都有一个proto属性,原型链上的对象正是依靠这个属性连接在一起
(2)当你访问对象其中一个属性或方法时,如果这个对象没有这个属性或方法,那么JavaScript引擎将会访问这个对象的proto属性指向的上一个对象,并在那个对象中查找指定的方法或属性;如果不能找到,就继续通过那个对象的proto属性指向的对象向上查找,直到这个链表结束。

原型对象包含所有实例共享的属性和方法,原型对象有一个属性constructor,这个属性包含一个指针,指向原构造函数

所有的构造函数的原型链最后都会引用Object构造函数的原型,即Object构造函数的原型是所有原型链的最底端。

java 返回的map 中 key value 值使用单引号 map的返回值是什么_数组

function Myfunction(){

}
var myfunction = new Myfunction();
console.log(myfunction.__proto__ == Myfunction.prototype) // true
console.log(Myfunction.prototype.constructor == Myfunction) // true
// ES5,可以获得对象的原型
console.log(Object.getPrototypeOf(myfunction) === Myfunction.prototype) // true

4.什么是垃圾回收机制

JavaScript基本数据类型存储在栈内存中,引用数据类型存储在堆内存中,但引用数据类型会在栈内存中存储一个实际对象的引用。当引用不可达时,原本堆内存中的对象就成为了一个垃圾。如果不及时清理,堆积起来,会影响系统的性能甚至可能造成系统崩溃。
垃圾回收就是定期找出不可达的对象(没有引用关系),将其释放。

两种策略:
·标记清除法(最常用)
算法分为标记和清除两个阶段,标记阶段就是给所有活动对象做上标记,清除阶段就是把没有标记的对象(非活动对象)销毁。
引擎在使用标记清除算法时,需要从出发点去遍历内存中所有的对象去做标记,而这样的出发点有很多,我们称之为一组根对象。
算法大致过程:
(1)垃圾收集器在运行时会给内存中所有变量都加上一个标记,假设内存中全部对象是垃圾,全标记为0
(2)从各个根对象开始遍历,把不是垃圾的节点改为1
(3)清理所有标记为0的垃圾,销毁并回收它们占用的内存空间
(4)最后,将所有内存中对象标记修改为0,等待下一轮垃圾回收

·引用计数法
引用计数法是最早的一种垃圾回收算法,它把对象是否不再需要简单定义为对象有没有其他对象引用到它。如果没有引用指向该对象(零引用),对象将被垃圾回收机制回收。目前很少使用。

5.px/em/rem这三个单位有什么区别

px是固定的像素,一旦设置了就无法因为适应页面大小而改变。

em和rem相对于px更具有灵活性,它们是相对长度单位。em是相对于其父元素来设置字体大小的,一般是以的”font-size”为基准。
元素的width/height/padding/margin用em的话,是相对于该元素的front-size
这样则导致一个问题:进行任何元素设置,都有可能需要知道它父元素的大小。

而rem是相对于根元素,则表示我们只需要在根元素确定一个参考值。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem