所有试题凭记忆整理,欢迎指正
1.label标签的作用
label元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在label元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。<label>标签的 for 属性应当与相关元素的 id 属性相同。”for” 属性可把 label 绑定到另外一个元素。请把 “for” 属性的值设置为相关元素的 id 属性的值。
2.简述你了解的盒模型
标准 w3c 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分。
ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 padding。
简单来说,w3c的盒模型的width只有content的宽度,而ie盒模型width算的是content、padding和border一共的宽度。
3.你了解的定位,都是相对于谁定位
static:默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
relative:生成相对定位的元素,相对于其正常位置进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
fixed:生成固定定位元素,元素框的表现类似于将 position 设置为 absolute,不过其是相对于视窗本身定位。
absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
4.简述弹性盒模型
Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。采用 Flex 布局的元素,称为 Flex 容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称”项目”。
flex容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
5.写出下面代码的输出值
var a = 1,
obj = {
a:2,
b:function(){
console.log(this.a);
},
c:function(){
return function(){
console.log(this.a)
}
}
};
obj.b();
obj.b.call(window);
obj.c()();
6.写出下面调用函数后的输出值
function add(a,b){
var n = a || 5,
m = b && 5;
return n + m
};
add(false,1);
add(1,false);
7.用另一个方法实现$.trim()的方法
String.prototype.trim = function() {
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
8.写出一种数组去重的方法
var arr = [1,2,3,4,3,1],
newArr = [];
for( var i = 0;i < arr.length;i ++ ){
if( newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i])
}
};
newArr;
9.给ul列表中的li添加事件,点击li弹出相应li中的文本
var list = document.getElementsByTagName('li');
for( var i = 0;i < list.length;i ++ ){
(function(){
list[i].onclick = function(){
console.log(this.innerHTML);
}
})(i)
}
10.call、apply和bind的区别
都是用来改变函数的this对象的指向的;第一个参数都是this要指向的对象;都可以利用后续参数传参;bind是返回对应函数,便于稍后调用,apply、call是立即调用;
11.js的同步和异步
同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入”任务队列”(task queue)的任务,只有”任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
js中的异步包括setTimeout和setInterval函数,还有ajax。
12.对于移动端页面内容较多怎么优化
懒加载,能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。
网友评论