#####
1. var a = [];
a[0] = 0;
a[1] = 1;
a[4] = 4;
请问a.length的值是多少?a[3]的输出结果是什么?
答: 5 undefined
#####
2. function Foo() {
var i = 0;
return function () {
console.log(i++);
}
}
var f1 = Foo();
f2 = Foo();
f1();
f1();
f2();
console.log(i);
请问打印输出的结果是多少?
答: 0 // f1 = Foo()相当于f1赋值为函数Foo()的返回值f1 = function() {
console.log(i ++);
}
1 // 因为f1在上一次的基础上又执行了一次函数,i ++ ,是在同一块内存中。
0
报错 // i 为 Foo内部的变量,全局不可访问,全局中没有i变量所以会报错。
请解释GET/POST的区别
GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&链接。
URL的拜年吗格式采用的ASCLL编码,而不是Unicode,即事说所有的非ASCLL字符都要编码
之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是
实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
传输数据的大小
在HTTP规范中,没有URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的
浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受到限制的,但是实际上各个服务器会规定对POST提交数据
大小进行限制,Apache、IIS都有各自的配置。
安全性
GET是Form的默认方法,安全性相对比较低。
请你描述一下cookies, sessionStorage 和 localStorage 的区别?
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求
之间保存数据。有了本地数据,就可以避免数据在浏览器和服务器之间不必要地来回传递。
sessionStorage、 localStorage、 cookie 都是浏览器端存储的数据,其中 sessionStorage的
概念很特别,引入了一个”浏览器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始终存在
的数据。也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一页面,数据仍然存在。关闭窗口
后,sessionStorage即被销毁。同时”独立”打开的不同窗口,即使是同一页面,sessionStorage对象也
是不同的。
cookies会发送到服务器端。其余两个不会。
Microsoft指出 Internet Explorer 8 增加 cookie 限制为每个域名50个,但IE7似乎也允许每个域名50个
cookie。 Firefox每个域名cookie限制为50个。Opera每个明月cookie限制为30个。Firefox和Safari
允许cookie多达4097个字节,包括名(name)、值(value)和等号。Opera允许cookie多达4096个字节,
包括名(name)、值(value)和等号。Internet Explorer允许 cookie多达4095个字节,包括:名(name)、
值(value)和等号。
Cookie
- 每个域名存储量比较小(各浏览器不同,大致4K)
- 所有域名的存储量有限制(各浏览器不同,大致4K)
- 有个数限制(各浏览器不同)
- 会随请求发送到服务器。
LocalStorage
- 永久存储
- 单个域名存储量比较大(推荐5MB,各浏览器不同)
- 总体数量无限制
- SessionStorage
- 只在Session内有效
- 存储量更大(推荐没有限制,但实际上各浏览器也不同)
image 和 canvas 在处理图片的时候有什么区别?
image 是通过对象的形式描述图片的
canvas 通过专门的API将图片绘制在画布上
响应式布局的时候,轮播图使用两张不同的图片去适配大屏幕和超小屏幕,还是一张图片进行压缩适配不同终端,说明原因?
最好使用两张不同大小的图片去适配大屏幕和超小屏幕,这样可以针对不同设备的屏幕大小,来加载相应的图片,
减少超小屏幕设备的网络流量消耗,加快相应速度,同时防止图片在大屏幕下分辨率不够导致失真的问题。
例举3种强制类型转换和2种隐式类型转换
强制( parseInt parseFloat Number)
隐式( == ===)
ajax请求时,如何解析JSON数据
- JSOn.parse
- eval()
- new Function()
CSS 清除浮动的几种方法
- 使用带clear属性的空元素
- 使用CSS的overflow属性
- 使用CSS的:after伪元素
- 使用邻接元素处理
封装一个方法实现获取样式的兼容写法
function getStyle(ele, style) {
if (window.getComputedStyle) {
return getComputedStyle(ele, null)[style];
} else {
return obj.currentStyle(style);
}
}