面试题-JavaScript

141 阅读3分钟

1.this关键字的使用方法

1.方法中的this,指向调用方法的对象。

2.全局环境下指向全局对象。

3.全局函数中的this,指向全局对象。

4.内部函数中的this,指向全局对象。

5.事件中的this,指向出发事件的dom对象。

6.构造函数中的this,指向new创建的对象。

7.箭头函数中的this,指向定义函数上下文的this。

3.split() 和 join() 的区别

split()是将字符串切割成数组的形式,join()是将数组转换成字符串。

4.JavaScript有哪些数据类型。

基本类型:String、Number、Boolean、Null、Undefined、Symbol。

引用数据类型:Object、Array、Function。

5.数据检测类型的方法有哪些?

typeof、instanceof、constructor、Object.prototype.toString.call()。

6.判断数据的方法有哪些?

instanceof、 Array.isArray()、 Object.prototype.toString.call()

7.null和undefined的区别?

Undefined:是表示变量声明过但并未赋过值

Null:代表空值,空引用。

8.例举3种强制类型转换和2种隐式类型转换?

强制 parseInt, parseFloat, number

隐式 (== === + -)

9.call,apply,bind

他们的作用都是修改this指向

他们的第一个参数都是被指向的对象

call() 方法接受的是参数列表,而 apply() 方法接受的是一个参数数组

bind的用法和call一样,但是bind方法的返回值是函数,需要调用才可以执行

10.原型链

(1).什么是原型?

每一个对象都有它的原型对象,它可以使用自己原型对象上的所有属性和方法。

(2).什么是原型链

原型链就是在当前对象中找不到的话,会在当前对象的原型对象上继续查找,直至undefined。

(3).获取原型的方法

1.是通过对象的__proto__获取。 2.是通过构造函数的prototype属性拿到原型。

11.闭包:

function a(){
    let num = 0;
       function b(){
           console.log(num)
       }
   return b
}
let fun = a()
fun()
(1).闭包的条件:

第一点,在函数内部也有一个函数。

第二点,函数内部的函数里面用到了外部函数的局部变量。

第三点,外部函数把内部函数作为返回值return出去了。

(2).闭包的作用:

延长了局部变量的生命周期

在外部控制局部变量

(3).闭包的缺点:

局部变量会长期驻留在内存中,可能会造成内存泄漏。

(4).解决闭包带来的缺点:

减少使用闭包

及时释放

12.get和post的区别

1.get请求一般是取获取数据,post请求一般是去提交数据。

2.get请求参数会放在url中,隐私性较差。post请求参数放在body中,隐私性比较好。

3.get请求刷新服务器或者回退没有影响,post请求回退时会重新提交数据请求。

4.get请求可以被缓存,post请求不会被缓存。

6.get请求只能进行url编码,post请求支持多种

13.http状态码

100-199 客户端相应的某些动作。

200-299 请求成功。

300-399 重定向。

400-499 客户端的错误。

500-599 服务器错误。

14.同步与异步的区别

同步:只有当前API执行完成后,才能继续执行下一个API 异步:当前API的执行不会阻塞后续代码的执行

15.跨域请求有哪些方案

1.JSONP

2.CORS

3.nginx反向代理

16.常见的继承有哪些

1.原型链继承

2.构造函数继承

3.组合继承

4.原型式继承

5.class类继承

6.寄生式继承

17.箭头函数有哪些特征 简单描述一下

1.箭头函数没有自己的this

2.即使调用call、apply、bind也无法修改箭头函数中的this

3.箭头函数本身没有名字

4.箭头函数不能new,会报错

5.箭头函数没有prototype