日常总结的面试题

1.数组方法
- pop()方法从数组中删除最后一个元素,并返回该元素的值。改变原数组。
- shift() 方法从数组中删除第一个元素,并返回该元素的值。改变原数组。
- concat() 方法用于合并两个或多个数组。返回一个新数组。
- sort() 方法用原地算法对数组的元素进行排序,并返回数组。
- entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。它的原型(__proto__:Array Iterator)上有一个next方法,可用用于遍历迭代器取得原数组的[key,value]。
- every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
- some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
- filter(callback) 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 
- find(callback) 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
- findIndex(callback)方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
- indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
- lastIndexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。从后向前。
- Array.isArray() 用于确定传递的值是否是一个 Array。
- join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。默认逗号分隔。
- keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。
- map(callback) 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
- Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
- forEach(callback) 方法对数组的每个元素执行一次给定的函数。
- Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。返回一个新的数组实例。
- includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。

2.作用域
全局作用域:直接编写在 script 标签之中的JS代码,都是全局作用域; 全局作用域在页面打开时创建,页面关闭时销毁;
局部作用域:  调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;

3.js数据类型
number string  boolean  null  undefined  object   function  array

4.let和const的区别 
let:无变量提升;不可重复声明;块级作用域;(用let声明的变量,只在let声明存在的代码块中生效)
const:无变量提升;不可重复声明(一旦声明立即赋值,声明的是一个常量,不可修改);块级作用域;

5.includes和indexOf区别
includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

6.OOP三大特性
特性:封装,继承,多态

7.什么是堆和栈,栈内存和堆内存的区别?  
堆:每创建一个新对象,在堆中就会有一个新空间放对象,栈中的变量对应的值是对象的内存地址
栈:值与值之间都是独立存在;修改一个变量的值其他变量不会受到影响。
区别:                                     
栈内存是存放变量和基本数据类型,对象的内存地址;堆内存存放的是对象。

8.new到底发生了什么?
--生成了一个{ }
--改变了this指向,从window变成了{ }
--属性、属性值、方法都存入到{ }
--生成了一个隐含的__proto__,指向了prototyp,
--返回{}

9.this
普通函数:this指向window;
构造函数:this指向的实例;
以对象属性方法调用时,this指向调用的对象;
以call和apply调用时,this指向call和apply传递的对象。

10.普通函数和构造函数的区别?
普通函数:this:指向window;默认返回值是undefined;调用时,没有new;函数名首字母小写.
构造函数:this:指向的实例;用new生成;默认返回值是实例本身,加return:值类型无效,引用类型生效;构造函数首字母大写.

11.闭包
是个函数,引用了外层函数的变量或参数的函数,一旦在外层函数的外部被调用它,产生了闭包.

12.原型链
从实例开始,通过__proto__属性层层访问,一直到Object.prototype这样一个链式结构就是原型链.

13.面向对象
一切皆对象,都是由Objdect为基础发展而来,因为面向对象的继承特征,所以可以调用Object的方法.
特性:封装,继承,多态

14.构造函数和原型的关系:
构造函数.prototype是原型;
构造函数.prototype.constructor=构造函数;
构造函数和实例的关系:实例通过new 构造函数生成.

15.实例和原型的关系:
实例.prototype=undefined
实例有一个__proto__属性,指向构造函数的prototype,即:实例.__proto__=构造函数.prototype.

16.请求方式 get post的区别:
get:不太安全  可携带的少  相对速度快 便捷
post:相对安全  可携带的多  理论上慢  稍复杂

17.其他
递归:自己调用自己。组成:调用的过程,终止的条件。
函数节流:当持续触发事件时,保证一定时间段内只调用一次事件处理函数。
函数防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。
重绘:一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的
重排(回流):元素的规模尺寸,布局,隐藏等改变而需要重新构建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值