Javascript:面试题

new 操作符具体干了什么呢?

  1. 开辟空间,创建一个空对象
  2. 将 this 指向空对象
  3. 动态给刚创建的对象添加成员属性;
  4. 隐式返回

原型和原型链

  • ​原型:创建一个构造函数,他有一个prototype属性指向原型对象,该函数拥有原型对象所有的属性和方法
  • 原型链:每个对象拥有一个原型对象,通过__proto__指向原型对象,并继承方法和属性。原型对象也会有原型,这样一层一层的关系就是原型链。

数组的方法

push,pop,unshift,shift,splice,concat,reverse,jion

字符串的方法

substr/substring,indexof,replace,charAt,toUpperCase/toLowerCase,split

闭包

  • 定义:闭包是指这个函数有权访问另一个函数作用域中的变量,创建闭包最常用的方式就是在一个函数内部创建另一个函数。
  • 作用:阻止变量被回收。私有化变量,模拟块级作用域,
  • 缺点:闭包会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏

什么是预解析?

js执行之前会将变量和函数进行声明提升,提升到代码最前面,但不提升赋值。

This指向

  • 普通函数中指向全局 window;
  • 对象的成员方法中指向该方法的宿主对象;
  • 构造函数中指向 new 出来的实例对象;
  • 事件处理函数中指向事件源;
  • 回调函数中指向全局 window

call/apply/bind 的区别

  • call和apply会调用函数,bind会返回一个函数。
  • call从第二个参数开始需要一个参数列表,
  • apply 第二个参数需要是一个数组

BOM 中有哪些常用的对象?

  • location:
    .href; 页面 url 地址 ,.hash; url 中#后的部分,.search; url 中?后的部分(查询字符串),.reload(); 刷新页面;
  • history:
    .go(),.forward(),.back();

列举几个常见的浏览器兼容问题?

  • ajax:主流浏览器发送 ajax 使用 XMLHttpRequest 创建异步对象,IE 浏览器时候用 XActive 创建异步对象;
  • 注册事件:主流浏览器注册事件addEventListener,IE 浏览器:注册事件:attachEvent
  • 阻止事件冒泡:主流浏览器:event.stopPropagation(),IE 浏览器:event.cancleBubble=true;
  • 获取事件源:主流浏览器 event.target,IE浏览器event.srcElement

什么是事件委托

本应该注册给子元素的事件, 注册给父元素
原理:事件冒泡

如何实现多个标签页的通信?

localStorage 通过 setItem()方法保存数据,getItem()获取数据

sessionStorage,localStorage 和 cookie 三者有什么区别?

  • cookie: 存储数据量相对比较少,需要设置过期时间,cookie 中存储的数据会伴随每一次http 请求被发送到服务端
  • sessionStorage :数据存储在页面的内存中,所以数据会跟随页面的关闭而销毁
  • localStorage :将数据存储在电脑的磁盘上,需要手动删除

常见 HTTP 状态码都有哪些?

200:响应内容返回成功
400:参数错误
404:地址不存在
500:服务器错误

你知道的 HTTP 请求方式有几种?

get,post,head,put

ajax 的工作原理

  1. 创建一部对象 var xhr=new XMLHttpRequest()
  2. 设置请求行 xhr.open(‘请求方式’,请求地址);
  3. 发送请求 Get 方式 xhr.send(null),

如何解决跨域问题?

jsonp, 服务器代理, cors

什么是同步和异步, 那种执行方式更好?

  • 同步是指一个程序执行完了接着去执行另外一个程序
  • 异步是指多个程序同时执行. 所以异步效率更高, 因为异步不会出现阻塞现象,

如何解决异步回调地狱

  • promise
  • async/await
  • generator

GET 和 POST 的区别,何时使用 POST

  • get:是将要传递的参数拼在 url 中进行传递,传递数据量少, 不安全
  • post:是将传递的参数放在请求体里传递, 携带数据量大, 相对安全. 要提交一些敏感数据(比如登录密码),上传文件时, 必须使用 post请求.

同源策略

浏览器只允许 js 代码请求同协议,域名,端口的数据接口上的数据

针对页面性能优化,你有哪些优化方案

使用精灵图,启用 CDN 加速服务;图片懒加载,

es6新特性

const,let,模板字符串,解构赋值,展开运算符,对象属性简写,函数参数默认值,Promise 异步对象,class 类

使用 let 和 var区别

let 声明的变量有块级作用域, 并且没有变量的声明提升

箭头函数有什么作用及实际应用场景

  • 作用:箭头函数可以使函数内部的 this 指向和函数外部保持一致;
  • 应用场景:
    • ajax的回调函数中使用箭头函数让回调函数中的 this 指向事件源
    • 定时器的第二个参数中使用箭头函数, 避免函数内部的 this 指向全局 window

Null和undifind的区别是什么

  • Null:代表空值,代表一个空对象指针。用法如下
    • 作为函数的参数,表示该函数的参数不是对象。
    • 作为对象原型链的终点。
  • undefined:声明了一个变量未初始化。用法如下
    • 变量被声明了,但没有赋值时,就等于undefined。
    • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
    • 对象没有赋值的属性,该属性的值为undefined。
    • 函数没有返回值时,默认返回undefined。
  • 实际上,undefined值是派生自null值的,二者进行相等比较会返回true

登录的问题

登录的时候后台会传递一个token,我们本地缓存,请求的时候讲token携带在请求头中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值