1.哪些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
a. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
b. 闭包
c. 控制台日志
d. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
2.闭包是什么?为什么要用它?
创建闭包就是在函数里创建另一个函数,通过另一个函数访问这个函数的局部变量,
利用闭包就可以将函数内部的变量和方法传递到外部,
闭包的特性:
a.函数里面在嵌套函数,
b.内部函数可以引用外层函数的参数和变量,
c.参数和变量不会被回收,
3.js延迟加载的方式有哪些?
1. defer和async
2. 动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)
3. 按需异步载入js
4.对JSON 的了解?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。
{
"age"
:
"12"
,
"name"
:
"back"
}
5.documen.write和 innerHTML 的区别?
document.write 只能重绘整个页面;
innerHTML 可以重绘页面的一部分;
6.减少页面加载的常用方法?
a. 优化图片
b. 优化CSS(压缩合并css,如 margin-top, margin-left...)
c. 网址后加斜杠(如www.campr.com/目录,会判断这个目录是什么文件类型,或者是目录。)
d. 标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。
当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了)
e. 减少http请求(合并文件,合并图片)
7.如何解决跨域问题?
a. jsonp(jsonp 的原理是动态插入 script 标签)
b. iframe(使用iframe访问另一个域,然后再从另一个页面读取iframe内容)
c. window.name、window.postMessage
d. 服务器上设置代理页面
e.设置HTTP头(但IE不识别)
8.HTTP状态码有哪些?什么意思?
a. 100-199 用于指定客户端应响应的某些动作
b. 200-299 用于表示请求成功
c. 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息
d. 400-499 用于指出客户端的错误
400:语义有误,当前请求无法被服务器理解
401:当前请求需要用户验证
403:服务器已经理解请求,但是拒绝执行它
e. 500-599 用于指出服务器错误
503:服务不可用
9.一个页面从输入URL到页面加载显示完成的过程?
浏览器解析HTML生成DOM树,
然后根据css生成css树,
最后javascript再根据DOM API操作DOM.
10.javascript创建对象的几种方式?
就是使用内置对象或各种自定义对象,也可以用JSON
a. 对象字面量方式
person = { firstname : "mark" ,
lastname : "yun" };
b. 用function模拟无参的构造函数。
function person( ){ };
c.用function this 实现
function pet(name , age ) {
this.name = name ;
this.age = age ;
}
d. 用工厂方式(内置对象)
var a = new object ( ) ;
a.name = "a";
a.age = 3 ;
a.work = function( ){
alert( a+ "......") ;
}
e. 用原型方式来创建
f. 混合方式来创建
11.GET和POST的区别?
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
POST:一般用于修改服务器上的资源,对所发送的信息没有限制
GET方式需要使用 Request.QueryString 来取得变量的值
POST方式通过 Request.Form 来获取变量的值
也就是说 Get 是通过地址栏来传值,而 Post 是通过提交表单来传值。
在以下情况中,请使用 POST 请求:
1. 无法使用缓存文件(更新服务器上的文件或数据库)
2. 向服务器发送大量数据(POST 没有数据量限制)
3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
12.eval是什么?
a. 是把对应的字符串解析成js代码并执行
b. 应该避免用eval,不安全
13.js代码去重?
var arr = [1,2,2,5,5,8,9];
var arrlis = [];
function oBtn(arr){
for(var i =0; i<arr.length; i++){
if(arrlis.indexOf(arr[i]) == -1){
arrlis.push(arr[i]);
}
}
return arrlis;
}
var arrlis = [];
function oBtn(arr){
for(var i =0; i<arr.length; i++){
if(arrlis.indexOf(arr[i]) == -1){
arrlis.push(arr[i]);
}
}
return arrlis;
}
14.Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
Ajax 是什么:
1. 通过异步模式,提升了用户体验
2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3. Ajax 在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。
Ajax 的最大的特点:
1. Ajax可以实现动态不刷新(局部刷新)
2. readyState 属性 状态 有5个可取值: 0 = 未初始化,1 = 启动, 2 = 发送,3 = 接收,4 = 完成
Ajax 同步和异步的区别:
1. 同步:提交请求 -> 等待服务器处理 -> 处理完毕返回,这个期间客户端浏览器不能干任何事
2. 异步:请求通过事件触发 -> 服务器处理(这是浏览器仍然可以作其他事情)-> 处理完毕
ajax.open方法中,第3个参数是设同步或者异步。
Ajax 的缺点:
1. Ajax 不支持浏览器 back 按钮
2. 安全问题 Ajax 暴露了与服务器交互的细节
3. 对搜索引擎的支持比较弱
4. 破坏了程序的异常机制
5. 不容易调试
解决跨域问题:
1. jsonp
2. iframe
3. window.name、window.postMessage
4. 服务器上设置代理页面