js常见面试题
Posted 老张在线敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常见面试题相关的知识,希望对你有一定的参考价值。
1. js 延迟加载的方式有哪些?
1. defer 和 async
2. 动态创建 DOM 方式(创建 script,插入到 DOM 中,加载完毕后 callBack)
3. 按需异步载入 js
2.哪些操作会造成内存泄漏?
内存泄漏指任何对象在你不再拥有或需要它之后仍然存在。 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的 内存即可回收。
3.讲一下原型链
在 javascript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。
其中每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象。 原型对象(Person.prototype)是构造函数(Person)的一个实例 原型对象其实就是普通对象(但 Function.prototype 除外,它是函数对象,但它很特殊,他没有prototype属性
4.什么是ajax
定义:ajax就是浏览器提供一套api,可以通过js调用,从而实现通过代码控制请求和响应,实现网络编程
主要是指一种创建交互式、快速动态网页应用的网页开发技术,不需要重新加载整个网页的情况下,能够更新部分网页的技术。
执行流程
0.请求未初始化 (代理XHR) 被创建 但是没有调用open
1.服务器连接已建立 open方法已经调用 建立连接
2.请求已经接收 send方法已经被调用 可以获取状态行和响应头
3.请求处理中 响应下载中 可能有部分数据
4.请求已完成 响应已就绪 响应下载完成 数据完整
请求方式 get post区别
get请求时 默认会设置请求头 Xhr.setRequestHeader(‘Accept’,’text|plain’)
数据会绑定在URL地址上 相对不安全 数据量受限 4kb
Post 一定要手动设置请求头Xhr.setRequestHeader(‘Content-type’,’application|x-www-form-urlencoded’)
数据会在send时一起发送 相对安全 数据量大 受服务端设置影响
简单来说的话:
get:放兜里的 不太安全 可携带的少 相对速度快 便捷
Post:托运 相对安全 可携带的多 理论上慢 稍复杂
5.XML和json的区别
(1)XML设置复杂 使用麻烦
(2)Json 字符串 使用简单 方便快捷
6.什么是函数节流防抖?
函数节流:当持续触发事件时,保证一定时间段内只调用一次事件处理函数。
函数防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。
7.栈内存跟堆内存的区别?
栈内存是存放变量和基本数据类型,对象得内存地址
堆内存存放的是对象基本数据类型是具体值,引用数据类型是可扩展的
变量跟基本数据类型存放在栈里,引用数据类型放在堆里
8.localStorage和sessionStorage还有cookies的区别
sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开存在,包括页面重新加载
localStorage(长期存储) :与 sessionStorage 一样,但是浏览器关闭后,数据依然会一直存在
cookies(可定时存储) :集合了上面俩个的功能,存储时间可以根据自己的需求去定义可永久可暂时
以上是关于js常见面试题的主要内容,如果未能解决你的问题,请参考以下文章