说说你对闭包的明白
运用闭包主如果为了设想私有的要领和变量。闭包的长处是能够防备全局变量的污染,瑕玷是闭包会常驻内存,会增大内存运用量,运用不当很轻易形成内存走漏。
闭包有三个特征:
函数嵌套函数
函数内部能够援用外部的参数和变量
参数和变量不会被渣滓接纳机制接纳
请你谈谈Cookie的弊病
请你谈谈Cookie的弊病
cookie虽然在耐久保存客户端数据供应了轻易,分管了服务器存储的累赘,但照样有许多局限性的。 第一:每一个特定的域名下最多天生20个cookie
1.IE6或更低版本最多20个cookie
2.IE7和以后的版本末了能够有50个cookie。
3.Firefox最多50个cookie
4.chrome和Safari没有做硬性限定
IE和Opera 会清算近期起码运用的cookie,Firefox会随机清算cookie。
cookie的最大大约为4096字节,为了兼容性,平常不能凌驾4095字节。
长处:极高的扩展性和可用性
1.经由历程优越的编程,掌握保存在cookie中的session对象的大小。
2.经由历程加密和平安传输手艺(SSL),削减cookie被破解的可能性。
3.只在cookie中寄存不敏感数据,纵然被盗也不会有重大损失。
4.掌握cookie的性命期,使之不会永久有用。偷窃者极可能拿到一个逾期的cookie。
瑕玷:
1.`Cookie`数目和长度的限定。每一个domain最多只能有20条cookie,每一个cookie长度不能凌驾4KB,不然会被截掉。
2.平安性题目。假如cookie被人阻拦了,那人就能够获得一切的session信息。纵然加密也与事无补,由于阻拦者并不须要晓得cookie的意义,他只需原样转发cookie就能够到达目的了。
3.有些状况不可能保存在客户端。比方,为了防备反复提交表单,我们须要在服务器端保存一个计数器。假如我们把这个计数器保存在客户端,那末它起不到任何作用。
浏览器当地存储在较高版本的浏览器中,js供应了sessionStorage和globalStorage。在HTML5中供应了localStorage来庖代globalStorage。
web storage和cookie的辨别
Web Storage的观点和cookie类似,辨别是它是为了更大容量存储设想的。Cookie的大小是受限的,而且每次你要求一个新的页面的时刻Cookie都邑被发送过去,如许无形中浪费了带宽,别的cookie还须要指定作用域,不能够跨域挪用。
除此以外,Web Storage具有setItem
,getItem
,removeItem
,clear
等要领,不像cookie须要前端开发者本身封装setCookie
,getCookie
。
然则cookie也是不能够或缺的:cookie的作用是与服务器举行交互,作为HTTP范例的一部份而存在 ,而Web Storage仅仅是为了在当地“存储”数据而生
浏览器的支撑除了IE7及以下不支撑外,其他规范浏览器都完整支撑(ie及FF需在web服务器里运转),值得一提的是IE老是办好事,比方IE7、IE6中的userData
实在就是javascript当地存储的处理方案。经由历程简朴的代码封装能够一致到一切的浏览器都支撑web storage
。
localStorage和sessionStorage都具有雷同的操纵要领,比方setItem
、getItem
和removeItem
等
cookie 和session 的辨别:
1、cookie数据寄存在客户的浏览器上,session数据放在服务器上。
2、cookie不是很平安,他人能够剖析寄存在当地的COOKIE并举行COOKIE诳骗考虑到平安应当运用session。
3、session会在肯定时候内保存在服务器上。当接见增添,会比较占用你服务器的机能考虑到减轻服务器机能方面,应当运用COOKIE。
4、单个cookie保存的数据不能凌驾4K,许多浏览器都限定一个站点最多保存20个cookie。
5、所以个人发起:
将上岸信息等主要信息寄存为SESSION
其他信息假如须要保存,能够放在COOKIE中
position:absolute和float属性的异同
A:共同点:
对内联元素设置float
和absolute
属性,能够让元素脱离文档流,而且能够设置其宽高。B:差别点:
float仍会占有位置,position会掩盖文档流中的其他元素。
引见一下box-sizing属性?
box-sizing
属性主要用来掌握元素的盒模子的剖析形式。默许值是content-box。content-box
:让元素保持W3C的规范盒模子。元素的宽度/高度由border
+padding
+content
的宽度/高度决议,设置width/height
属性指的是content
部份的宽/高
CSS 挑选符有哪些?哪些属机能够继续?优先级算法如何盘算? CSS3新增伪类有那些?
id挑选器( # myid)
类挑选器(.myclassname)
标签挑选器(div, h1, p)
相邻挑选器(h1 + p)
子挑选器(ul > li)
子女挑选器(li a)
通配符挑选器( * )
属性挑选器(a[rel = “external”])
伪类挑选器(a: hover, li:nth-child)
可继续的款式: font-size font-family color, text-indent
;
不可继续的款式:border padding margin width height
;
CSS3新增伪类举例:
p:first-of-type 挑选属于其父元素的首个 <p> 元素的每一个 <p> 元素。
p:last-of-type 挑选属于其父元素的末了 <p> 元素的每一个 <p> 元素。
p:only-of-type 挑选属于其父元素唯一的 <p> 元素的每一个 <p> 元素。
p:only-child 挑选属于其父元素的唯一子元素的每一个 <p> 元素。
p:nth-child(2) 挑选属于其父元素的第二个子元素的每一个 <p> 元素。
:enabled :disabled 掌握表单控件的禁用状况。
:checked 单选框或复选框被选中。
XML和JSON的辨别?
(1).数据体积方面。
JSON相关于XML来说,数据的体积小,通报的速率更快些。
(2).数据交互方面。
JSON与JavaScript的交互越发轻易,更轻易剖析处置惩罚,更好的数据交互。
(3).数据形貌方面。
JSON对数据的形貌性比XML较差。
(4).传输速率方面。
JSON的速率要远远快于XML。
罕见兼容性题目?
png24位的图片在iE6浏览器上涌现背景,处理方案是做成PNG8.也能够援用一段剧本处置惩罚.
浏览器默许的margin和padding差别。处理方案是加一个全局的*{margin:0;padding:0;}来一致。
IE6双边距bug:块属性标签float后,又有横行的margin状况下,在ie6显现margin比设置的大。
浮动ie发作的双倍间隔(IE6双边距题目:在IE6下,假如对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会更加。)
#box{ float:left; width:10px; margin:0 0 0 100px;}
这类状况之下IE会发作20px的间隔,处理方案是在float的标签款式掌握中到场 ——_display:inline;将其转化为行内属性。(_这个标记只要ie6会辨认)
渐进辨认的体式格局,从整体中逐步消除部分。
css
.bb{
background-color:#f1ee18;/*一切辨认*/
.background-color:#00deff\9; /*IE6、7、8辨认*/
+background-color:#a200ff;/*IE6、7辨认*/
_background-color:#1e0bd1;/*IE6辨认*/
}
超链接接见事后hover款式就不涌现了 被点击接见过的超链接款式不在具有hover和active了处理要领是转变CSS属性的分列递次:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
高低margin重合题目
ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,然则margin-top和margin-bottom却会发作重合。 处理要领,养成优越的代码编写习气,同时采纳margin-top或许同时采纳margin-bottom。
诠释下浮动和它的事情道理?消灭浮动的技能
浮动元素脱离文档流,不占有空间。浮动元素遇到包含它的边框或许浮动元素的边框停止。
1.运用空标签消灭浮动。
这类要领是在一切浮动标签背面增添一个空标签 定义css clear:both. 弊病就是增添了无意义标签。
2.运用overflow。
给包含浮动元素的父标签增添css属性 overflow:auto; zoom:1; zoom:1用于兼容IE6。
3.运用after伪对象消灭浮动。
该要领只适用于非IE浏览器。详细写法可参照以下示例。运用中需注意以下几点。一、该要领中必需为须要消灭浮动元素的伪对象中设置 height:0,不然该元素会比现实凌驾多少像素;
浮动元素激发的题目和处理办法?
浮动元素激发的题目:
(1)父元素的高度没法被撑开,影响与父元素同级的元素
(2)与浮动元素同级的非浮动元素(内联元素)会追随厥后
(3)若非第一个元素浮动,则该元素之前的元素也须要浮动,不然会影响页面显现的组织
处理要领: 运用CSS中的clear:both;属性来消灭元素的浮动可处理2、3题目,关于题目1,增添以下款式,给父元素增添clearfix款式:
.clearfix:after{content: ".";display: block;height: 0;clear: both;visibility: hidden;}
消灭浮动的几种要领:
1,分外标签法,<div style=”clear:both;”></div>(瑕玷:不过这个办法会增添分外的标签使HTML组织看起来不够简约。)
2,运用after伪类
parent:after{
content:".";
height:0;
visibility:hidden;
display:block;
clear:both;
}
3,浮动外部元素
4,设置overflow
为hidden
或许auto
IE 8以下版本的浏览器中的盒模子有什么差别
IE8以下浏览器的盒模子中定义的元素的宽高包含内边距和边框
DOM操纵——如何增添、移除、挪动、复制、建立和查找节点。
(1)建立新节点
createDocumentFragment() //建立一个DOM片断
createElement() //建立一个详细的元素
createTextNode() //建立一个文本节点
(2)增添、移除、替代、插进去
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的子节点前插进去一个新的子节点
(3)查找
getElementsByTagName() //经由历程标签称号
getElementsByName() //经由历程元素的Name属性的值(IE容错才能较强,会获得一个数组,个中包含id即是name值的)
getElementById() //经由历程元素Id,唯一性
html5有哪些新特征、移除了那些元素?如何处置惩罚HTML5新标签的浏览器兼容题目?如何辨别 HTML 和 HTML5?
HTML5 如今已不是 SGML 的子集,主如果关于图象,位置,存储,多任务等功能的增添。
拖拽开释(Drag and drop) API
语义化更好的内容标签(header,nav,footer,aside,article,section)
音频、视频API(audio,video)
画布(Canvas) API
地舆(Geolocation) API
当地离线存储 localStorage 历久存储数据,浏览器封闭后数据不丧失;
sessionStorage 的数据在浏览器封闭后自动删除
表单控件,calendar、date、time、email、url、search
新的手艺webworker, websocket, Geolocation
移除的元素
IE8/IE7/IE6支撑经由历程document.createElement要领发作的标签,
能够运用这一特征让这些浏览器支撑HTML5新标签,
浏览器支撑新标签后,还须要增添标签默许的款式:
固然最好的体式格局是直接运用成熟的框架、运用最多的是html5shim框架
<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
iframe的优瑕玷?
1.<iframe>
长处:
处理加载迟缓的第三方内容如图标和广告等的加载题目
Security sandbox
并行加载剧本
2.<iframe>
的瑕玷:
*iframe会壅塞主页面的Onload事宜;
*立即内容为空,加载也须要时候
*没有语意
如何完成浏览器内多个标签页之间的通讯?
挪用localstorge、cookies等当地存储体式格局 也能够运用页面传参
null和undefined的辨别?
null是一个示意”无”的对象,转为数值时为0;undefined是一个示意”无”的原始值,转为数值时为NaN。
null示意”没有对象”,即该处不该该有值。典范用法是:(1) 作为函数的参数,示意该函数的参数不是对象。 (2) 作为对象原型链的尽头。
undefined示意”缺乏值”,就是此处应当有一个值,然则还没有定义。典范用法是:
(1)变量被声清楚明了,但没有赋值时,就即是undefined。 (2) 挪用函数时,应当供应的参数没有供应,该参数即是undefined。 (3)对象没有赋值的属性,该属性的值为undefined。 (4)函数没有返回值时,默许返回undefined。
new操纵符详细干了什么呢?
1、建立一个空对象,而且 this 变量援用该对象,同时还继续了该函数的原型。
2、属性和要领被到场到 this 援用的对象中。
3、新建立的对象由 this 所援用,而且末了隐式的返回 this 。
documen.write和 innerHTML的辨别
document.write只能重绘全部页面
.call() 和 .apply() 的辨别和作用?
作用:动态转变某个类的某个要领的运转环境。
哪些操纵会形成内存走漏?
内存走漏指任何对象在您不再具有或须要它以后依然存在。
渣滓接纳器按期扫描对象,并盘算援用了每一个对象的其他对象的数目。假如一个对象的援用数目为 0(没有其他对
象援用过该对象),或对该对象的唯一援用是轮回的,那末该对象的内存即可接纳。setTimeout 的第一个参数运用字符串而非函数的话,会激发内存走漏。
闭包、掌握台日记、轮回(在两个对象相互援用且相互保存时,就会发作一个轮回)
ajax历程
(1)建立XMLHttpRequest对象,也就是建立一个异步挪用对象.
(2)建立一个新的HTTP要求,并指定该HTTP要求的要领、URL及考证信息.
(3)设置相应HTTP要求状况变化的函数.
(4)发送HTTP要求.
(5)猎取异步挪用返回的数据.
(6)运用JavaScript和DOM完成部分革新.
前端平安题目?
sql注入道理
就是经由历程把SQL敕令插进去到Web表单递交或输入域名或页面要求的查询字符串,终究到达诳骗服务器实行歹意的SQL敕令。
总的来说有以下几点:
1.永久不要信托用户的输入,要对用户的输入举行校验,能够经由历程正则表达式,或限定长度,对单引号和双”-“举行转换等。
2.永久不要运用动态拼装SQL,能够运用参数化的SQL或许直接运用存储历程举行数据查询存取。
3.永久不要运用管理员权限的数据库衔接,为每一个运用运用零丁的权限有限的数据库衔接。
4.不要把秘要信息明文寄存,请加密或许hash掉暗码和敏感的信息。
XSS道理及提防
Xss(cross-site scripting)进击指的是进击者往Web页面里插进去歹意html标签或许javascript代码。比方:进击者在论坛中放一个 看似平安的链接,欺骗用户点击后,盗取cookie中的用户私密信息;或许进击者在论坛中加一个歹意表单, 当用户提交表单的时刻,却把信息传送到进击者的服务器中,而不是用户底本认为的信托站点。
XSS提防要领
1.代码里对用户输入的处所和变量都须要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必需加以encode,防备不小心把html tag 弄出来。这一个层面做好,最少能够堵住凌驾一半的XSS 进击。
2.防备直接在cookie 中走漏用户隐私,比方email、暗码等等。
3.经由历程使cookie 和体系ip 绑定来下降cookie 走漏后的风险。如许进击者获得的cookie 没有现实代价,不可能拿来重放。
4.只管采纳POST 而非GET 提交表单
XSS与CSRF有什么辨别吗?
XSS是猎取信息,不须要提早晓得其他用户页面的代码和数据包。CSRF是替代用户完成指定的行动,须要晓得其他用户页面的代码和数据包
要完成一次CSRF进击,受害者必需顺次完成两个步骤:
1.登录受信托网站A,并在当地天生Cookie。 2.在不登出A的状况下,接见风险网站B。
javascript内里的继续怎样完成,如何防备原型链上面的对象同享
用组织函数和原型链的夹杂形式去完成继续,防备对象同享能够参考典范的extend()函数,许多前端框架都有封装的,就是用一个空函数当作中心变量
grunt, YUI compressor 和 google clojure用来举行代码紧缩的用法。
Flash、Ajax各自的优瑕玷,在运用中如何弃取?
1、Flash ajax对照
Flash合适处置惩罚多媒体、矢量图形、接见机械;对CSS、处置惩罚文本上不足,不轻易被搜刮。
Ajax对CSS、文本支撑很好,支撑搜刮;多媒体、矢量图形、机械接见不足。
共同点:与服务器的无革新通报音讯、用户离线和在线状况、操纵DOM
GET和POST的辨别,什么时候运用POST?
GET:平常用于信息猎取,运用URL通报参数,对所发送信息的数目也有限定,平常在2000个字符
POST:平常用于修正服务器上的资本,对所发送的信息没有限定。
js对象的深度克隆
function clone(Obj) {
var buf;
if (Obj instanceof Array) {
buf = []; //建立一个空的数组
var i = Obj.length;
while (i--) {
buf[i] = clone(Obj[i]);
}
return buf;
}else if (Obj instanceof Object){
buf = {}; //建立一个空对象
for (var k in Obj) { //为这个对象增添新的属性
buf[k] = clone(Obj[k]);
}
return buf;
}else{
return Obj;
}
}
说说TCP传输的三次握手战略
为了准确无误地把数据送达目的处,TCP协定采纳了三次握手战略。用TCP协定把数据包送出去后,TCP不会对传送 后的状况置之度外,它肯定会向对方确认是不是胜利送达。握手历程当中运用了TCP的标志:SYN和ACK。
发送端起首发送一个带SYN标志的数据包给对方。吸收端收到后,回传一个带有SYN/ACK标志的数据包以示转达确认信息。末了,发送端再回传一个带ACK标志的数据包,代表“握手”完毕
若在握手历程当中某个阶段莫名中缀,TCP协定会再次以雷同的递次发送雷同的数据包。
Javascript渣滓接纳要领
标记消灭(mark and sweep)
这是JavaScript最罕见的渣滓接纳体式格局,当变量进入实行环境的时刻,比方函数中声明一个变量,渣滓接纳器将其标记为“进入环境”,当变量脱离环境的时刻(函数实行完毕)将其标记为“脱离环境”。
渣滓接纳器会在运转的时刻给存储在内存中的一切变量加上标记,然后去掉环境中的变量以及被环境中变量所援用的变量(闭包),在这些完成以后仍存在标记的就是要删除的变量了
援用计数(reference counting)
在低版本IE中经常会涌现内存走漏,许多时刻就是由于其采纳援用计数体式格局举行渣滓接纳。援用计数的战略是跟踪纪录每一个值被运用的次数,当声清楚明了一个 变量并将一个援用范例赋值给该变量的时刻这个值的援用次数就加1,假如该变量的值变成了别的一个,则这个值得援用次数减1,当这个值的援用次数变成0的时 候,申明没有变量在运用,这个值没法被接见了,因而能够将其占用的空间接纳,如许渣滓接纳器会在运转的时刻清算掉援用次数为0的值占用的空间。
在IE中虽然JavaScript对象经由历程标记消灭的体式格局举行渣滓接纳,但BOM与DOM对象倒是经由历程援用计数接纳渣滓的,也就是说只需触及BOM及DOM就会涌现轮回援用题目。
谈谈机能优化题目
代码层面:防备运用css表达式,防备运用高等挑选器,通配挑选器。 缓存运用:缓存Ajax,运用CDN,运用外部js和css文件以便缓存,增添Expires头,服务端设置Etag,削减DNS查找等 要求数目:兼并款式和剧本,运用css图片精灵,初始首屏以外的图片资本按需加载,静态资本耽误加载。 要求带宽:紧缩文件,开启GZIP,
挪动端机能优化
只管运用css3动画,开启硬件加速。恰当运用touch事宜替代click事宜。防备运用css3渐变暗影结果。 只管少的运用box-shadow与gradients。box-shadow与gradients每每都是页面的机能杀手
什么是Etag?
页面传参,取值
当地存储localStorage(长时候存储),sessionStorage(存储时候短,浏览器封闭随之消逝),用法设置loacalStorage.setItem(字段,值),localStorage.getItem(字段,值)
URL传值
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}