1.下列代码存在几个变量没有被回收
var i = 1;
var i = 2;
var add = function() {
var i = 0;
return function()
{
i++;
console.log(i);
}
}();
add();
代码回收规则如下:
1.全局变量不会被回收。
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收
有3个变量没有被回收,首先是全局变量中的i,第二行会覆盖掉第一行,因此只有1个。第二个是var add,这个变量也没有回收,他定义了一个匿名函数,并将它赋给了add。第三个就是闭包中的变量i,闭包中的局部变量是不会被回收的,因此是3个变量没有被回收。我是这样理解的
2.哪些技术可用于优化 CSS 图片加载
CSSSprite 减少对服务器请求
SVGSprite 体积小,矢量
Iconfont 体积小,矢量,集成度高
Base64 减少对服务器请求
图片懒加载
3.Audio/Video
audio 标签属性:
src:音乐的URL
preload:预加载
autoplay:自动播放
loop:循环播放
controls:浏览器自带的控制条
video 标签属性:
src:视频的URL
poster:视频封面,没有播放时显示的图片
preload:预加载
autoplay:自动播放
loop:循环播放
controls:浏览器自带的控制条
width:视频宽度
height:视频高度
4.JavaScript中document.getElementById()的返回值的类型为链接:
oElement = document . getElementById ( sID )
参数: sID : 必选项。字符串 (String)
返回值: oElement : 对象 (Element) 。
说明: 根据指定的 id 属性值得到对象。返回 id 属性值等于 sID 的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一个。
如果无符合条件的对象,则返回 null