1. 请写出至少 5 个 html5 新增的标签, 并说明其语义和应用场景?
section: 定义文档中的一个章节;
nav: 定义只包含导航链接的章节;
header: 定义页面或章节的头部;
它经常包含 logo, 页面标题和导航性的目录.
footer: 定义页面或章节的尾部;
它经常包含版权信息, 法律信息链接和反馈建议用的地址.
aside: 定义和页面内容关联度较低的内容,
如果被删除, 剩下的内容仍然很合理.
2. get 和 post 请求在缓存方面的区别?
get 请求类似于查找的过程, 用户获取数据,
可以不用每次都与数据库连接, 所以可以使用缓存.
post 不同, post 做的一般是修改和删除的工作,
所以必须与数据库交互, 所以不能使用缓存.
因此 get 请求适合于请求缓存.
3. 如何解决异步回调地狱?
promise,generator,async/await
4. 图片的懒加载和预加载?
预加载: 提前加载图片,
当用户需要查看时可直接
从本地缓存中渲染.
懒加载: 懒加载的主要目的
是作为服务器前端的优化,
减少请求数或延迟请求数.
两种技术的本质:
两者的行为是相反的,
一个是提前加载,
一个是迟缓甚至不加载.
懒加载对服务器前端有一定
的缓解压力作用,
预加载则会增加服务器前端压力.
5. bind,apply,call 的区别?
通过 apply 和 call 改变函数的 this 指向,
这两个函数的第一个参数都是一样的,
表示要改变指向的那个对象,
第二个参数, apply 是数组,
而 call 则是 arg1,arg2... 这种形式.
通过 bind 改变 this 作用域
会返回一个新的函数,
这个函数不会马上执行.
6. JS 怎么控制一次加载一张图片, 加载完后再加载下一张?
方法一:
- <script type="text/javascript">
- var obj=new Image();
- obj.src="http://www.itlike.com/21.jpg";
- obj.onload=function(){
- document.getElementById("pic")
- .innnerHTML="<img src='"+this.src+"'/>";
- }
- </script>
- <div id="pic"> 加载中......</div>
方法二:
- <script type="text/javascript">
- var obj=new Image();
- obj.src="http://www.itlike.com/21.jpg";
- obj.onreadystatechange=function(){
- if(this.readyState=="complete"){
- document.getElementById("pic")
- .innnerHTML="<img src='"+this.src+"'/>";
- }
- }
- </script>
- <div id="pic"> 加载中......</div>
来源: http://www.jianshu.com/p/b82a4974ca4f