1、HTTP协议的状态消息都有哪些?

HTTP状态码是什么

Web服务器用来告诉客户端,发生了什么事。

状态码分类:

1**:信息提示。请求收到,继续处理
2**:成功。操作成功收到,分析、接受
3**:重定向。完成此请求必须进一步处理
4**:客户端错误。请求包含一个错误语法或不能完成
5**:服务器错误。服务器执行一个完全有效请求失败

状态码详解:

100(继续):服务器收到的请求不完整,但服务器没有拒绝请求,客户端应重新发送一个完整的请求。

101(切换协议):服务器改用别的协议了

200(成功):服务器已成功处理了请求

201(已创建):请求成功并且服务器创建了新的资源

202(已接受): 服务器已接受请求,但尚未处理

203 (非授权信息) :服务器已成功处理了请求,但返回的信息可能来自另一来源。

204 (无内容): 服务器成功处理了请求,但没有返回任何内容。

205 (重置内容): 服务器成功处理了请求,但没有返回任何内容。

206 (部分内容): 服务器成功处理了部分 GET 请求。

300 (多种选择): 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。

301 (永久移动): 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 (临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

303 (查看其他位置): 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

304 (未修改): 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

305 (使用代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

400 (错误请求): 服务器不理解请求的语法。

401 (未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

403 (禁止): 服务器拒绝请求。

404 (未找到): 服务器找不到请求的网页。

405 (方法禁用): 禁用请求中指定的方法。

406 (不接受): 无法使用请求的内容特性响应请求的网页。

407 (需要代理授权): 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。

408 (请求超时): 服务器等候请求时发生超时。

409 (冲突): 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。

410 (已删除): 如果请求的资源已永久删除,服务器就会返回此响应。

411 (需要有效长度): 服务器不接受不含有效内容长度标头字段的请求。

412 (未满足前提条件): 服务器未满足请求者在请求中设置的其中一个前提条件。

413 (请求实体过大): 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

414 (请求的 URI 过长): 请求的 URI(通常为网址)过长,服务器无法处理。

415 (不支持的媒体类型): 请求的格式不受请求页面的支持。

416 (请求范围不符合要求): 如果页面无法提供请求的范围,则服务器会返回此状态代码。

417 (未满足期望值): 服务器未满足"期望"请求标头字段的要求。

500 (服务器内部错误) 服务器遇到错误,无法完成请求。

501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。

503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

常见的状态码(只要记住这些就可以了):

200——服务器已成功处理了请求

301——请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

404——服务器找不到请求的网页。

500——服务器遇到错误,无法完成请求。

503——服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504——服务器作为网关或代理,但是没有及时从上游服务器收到请求。

2、AJAX是什么? AJAX的交互模型(流程)? AJAX跨域的解决办法?

AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。

AJAX的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器相应异步化。并不是所有的用户请求都提交给服务器,像一些数据验证和数据处理等都交给AJAX引擎自己来做,只有确定需要从服务器读取新数据时再由AJAX引擎代为向服务器提交请求。

跨域问题,可以实用jquery的jsonp来处理:

$(document).ready(function(){var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"+"?id=1&callback=?';$.ajax({url:url,dataType:'jsonp',//重点processData: false, type:'get',success:function(data){alert(data.name);},error:function(XMLHttpRequest, textStatus, errorThrown) {alert(XMLHttpRequest.status);alert(XMLHttpRequest.readyState);alert(textStatus);}});});

3、同步和异步的区别?

举个例子:普通B/S模式(同步)——AJAX技术(异步)

同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

4、简述JavaScript封装。

JS封装就是尽量把使用的方式简单化,内部逻辑和使用解耦。通俗的说就是使用的时候只需要知道参数和返回值,其他条件尽量不要使用人员进行设置。

函数形式:

function taojiaqu(a,b){//内部对a,b进行处理
}

对象形式:

function taojiaqu(a,b){this.x=a;this.y=b;
}
var tjq = new taojiaqu(1,2);//通过面向对象的方式
alert(tjq.x)

闭包形式:

function tjq(a,b){var k = 1;return function tt(){k++;return k;}
}
var u = kk(1,2);
u();//闭包实现累加 k=2
u();//闭包实现累加 k=3
alert(u());//弹出4

5、JavaScript继承。

对象冒充:

function tjq(username){this.username = username; this.hello = function(){ alert(this.username); }
}
function taojiaqu(username,password){ //通过以下3行实现将tjq的属性和方法追加到taojiaqu中,从而实现继承 //1:this.method是作为一个临时的属性,并且指向tjq所指向的对象, //2:执行this.method方法,即执行tjq所指向的对象函数 //3:销毁this.method属性,即此时taojiaqu就已经拥有了tjq的所有属性和方法 this.method = tjq; this.method(username);//最关键的一行 delete this.method; this.password = password; this.world = function(){ alert(this.password); }
}
var parent = new tjq("tjq");
var child = new taojiaqu("taojiaqu","123456");
parent.hello(); //弹出tjq
child.hello(); //弹出taojiaqu
child.world(); //弹出123456

call()方法方式

function tjq(username){this.username = username; this.hello = function(){ alert(this.username); }
}
function taojiaqu(username,password){ //语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) //定义:调用一个对象的一个方法,以另一个对象替换当前对象。 tjq.call(this,username);this.password = password;this.world = function(){ alert(this.password); }
}
var parent = new tjq("tjq");
var child = new taojiaqu("taojiaqu","123456");
parent.hello(); //弹出tjq
child.hello(); //弹出taojiaqu
child.world(); //弹出123456

apply方法方式:

function tjq(username){this.username = username; this.hello = function(){ alert(this.username); }
}
function taojiaqu(username,password){ //语法:apply([thisObj[,argArray]]) //定义:应用某一对象的一个方法,用另一个对象替换当前对象。//跟call基本一个意思,只是第二个参数必须是数组tjq.apply(this,[username]);this.password = password;this.world = function(){ alert(this.password); }
}
var parent = new tjq("tjq");
var child = new taojiaqu("taojiaqu","123456");
parent.hello(); //弹出tjq
child.hello(); //弹出taojiaqu
child.world(); //弹出123456

原型链方式:

function tjq(){}
tjq.prototype.username='taojiaqu';
tjq.prototype.sayUsername=function(){alert(this.username);
}
function taojiaqu(){}
taojiaqu.prototype=new tjq();//将tjq中将所有通过prototype追加的属性和方法都追加到taojiaqu,从而实现了继承
taojiaqu.prototype.password='123456';
taojiaqu.prototype.sayPassword=function(){alert(this.password);
}
var parent = new taojiaqu();
parent.sayUsername(); //弹出taojiaqu
parent.sayPassword(); //弹出123456

混合方式(原型链+call()):

function tjq(username){this.username=username;
}
tjq.prototype.sayUsername=function(){alert(this.username);
}
function taojiaqu(username){tjq.call(this,username);//将tjq属性继承过来this.password='123456';this.sayPassword=function(){alert(this.password);}
}
taojiaqu.prototype=new tjq();//将tjq原型链方法继承过来
var parent = new taojiaqu('taojiaqu');
parent.sayUsername(); //弹出taojiaqu
parent.sayPassword(); //弹出123456

6、什么是闭包?

官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点:

1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
简单的说,javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
以下两端代码都能依次点击弹出0,1,2,3...
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>js闭包</title><style>*{margin: 0;padding: 0;}li{line-height: 30px;background: red;border-bottom: 1px solid #000}</style>
</head>
<body><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul>
</body>
</html>
<script>window.onload=function(){var olis=document.getElementsByTagName('li');for(var i=0;i<olis.length;i++){eventClick(olis,i);}}function eventClick(obj,i){return obj[i].οnclick=function(){alert(i);}}</script>

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>js闭包</title><style>*{margin: 0;padding: 0;}li{line-height: 30px;background: red;border-bottom: 1px solid #000}</style>
</head>
<body><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul>
</body>
</html>
<script>window.onload=function(){var olis=document.getElementsByTagName('li');for(var i=0;i<olis.length;i++){(function(i){olis[i].onclick=function(){alert(i);};})(i);}}
</script>

由于闭包可以把变量参数存于内存当中,即使你跳转页面也还会存在,这就引发了内存泄漏,除非你关闭浏览器,它才会自动释放

转载于:https://www.cnblogs.com/chenrf/p/4895870.html

前端面试题整理(js)相关推荐

  1. 前端面试题整理汇总(一)

    前端面试题整理汇总(一) 优才网 关于前端面试题,优优之前推荐过,如下,点击即可查看: 5个经典的前端面试问题 2016年十家知名公司前端面试经验总结 前端面试会问哪些问题? 前端开发面试题汇总[HT ...

  2. 前端面试题整理2020

    前端面试题整理2020 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势. 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5. ...

  3. 前端面试题整理——(第一弹 HTML和CSS)

    文章目录 前端面试题整理--(第一弹 HTML和CSS) 1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什 ...

  4. 最新前端面试题整理和答案(全)一直更新

    最新前端面试题整理和答案(全) 参考地址:https://blog.csdn.net/wdlhao/article/details/79079660 javascript: JavaScript中如何 ...

  5. 前端面试题整理-ing---kalrry

    前端面试题整理-ing---kalrry 前言 一.Html/Css面试题 1. img中的alt和title的区别 2. rem/em/vw的区别 3. BFC 是什么 4. @media all ...

  6. 前端面试题总结(js部分)|下

    40 . 有这样一个 URL: http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e , 请写一段JS程序提取 URL ...

  7. 前端面试题整理(定期更新)

    前言 因为面试的原因,最近又开始关注前端面试题,浏览过网上很多面试题集合,有很多小伙伴整理的很全面,但是我发现其中有很多技术点在当下已不再流行,而面试题一般都是映射开发中常遇到的一些技能和问题,再结合 ...

  8. 【前端】前端面试题整理

    前端和计算机相关知识 你能描述一下渐进增强和优雅降级之间的不同吗 浏览器兼容问题 如何对网站的文件和资源进行优化? 怎么学习前端?怎么接触前端新知识? 关于前后端分离 关于浏览器内核(渲染引擎) 浏览 ...

  9. 菜鸡前端面试题整理日记

    一直以来都有写点什么东西的想法,但又整天犹犹豫豫的,一会觉得准备不够充分,写的内容没什么质量,一会又觉得没什么内容可写的,以至于一拖再拖.万事开头难,难着难着就没有下面了,以此先开个头,记录自己的成长 ...

  10. WEB前端面试题整理

    WEB前端面试题 文章目录 WEB前端面试题 一.html部分 1.Doctype有什么作用?标准模式与兼容模式有什么区别 2.标准模式与兼容模式(怪异模式)各有什么区别? div1和div2之间的距 ...

最新文章

  1. 获得客户端的时区(get client-side time zone by JS)
  2. C++多小球非对心弹性碰撞(HGE引擎)
  3. 关于投稿 LaTeX 的使用
  4. python将整数逆序_python练手入门小项目:字符串的妙用
  5. 会话跟踪技术之HttpSession
  6. 一般java,【面试题】java一般
  7. byte java 空_java – 如何检查字节数组是否为空?
  8. S. gcc相关软件安装
  9. js将数值格式化成金额形式
  10. 用BT3和spoonwep2研究学习WEP密码…
  11. 【STC单片机】STC15单片机读取MPU6050模块数据并串口输出
  12. 3D博物馆虚拟纪念馆数字博览厅的“另类”展现方式
  13. P4199 万径人踪灭 [Manacher + FFT]
  14. 2-1.基金的募集,交易与登记
  15. 软件测试中手机性能测试怎么做,软件测试之手机知与手机性能测试完整版.doc...
  16. 23种设计模式11---享元模式
  17. 《笑傲江湖》清心普善咒——曲谱(琴箫合奏曲)
  18. 深度强化学习-Q-learning解决悬崖寻路问题-笔记(三)
  19. 1-MATLAB APP Design-图像的输入与输出
  20. 2022年全球市场Type-C USB网络摄像头总体规模、主要生产商、主要地区、产品和应用细分研究报告

热门文章

  1. 宝马戴姆勒、大众福特 自动驾驶圈又添新团伙
  2. html自定义radio样式,用纯CSS 自定义radio checkbox 样式
  3. java---24点游戏 :从扑克中每次取出4张牌,使用加减乘除,第一个能得出24者为赢。
  4. hashmap的get查找过程
  5. Spring @Configuration注解及配置方法
  6. 022_JavaScript数字
  7. Java NIO 系列教程
  8. python编程语言继承_python应用:学习笔记(Python继承)
  9. abb变频器电机过热保护怎么复位_变频器驱动的电机过热该怎么办
  10. angularjs组件间通讯_详解Angular2组件之间如何通信