美文网首页
web前端迈外迪面试题

web前端迈外迪面试题

作者: 戈德斯文 | 来源:发表于2017-06-01 14:32 被阅读0次

所有试题凭记忆整理,欢迎指正

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.对于移动端页面内容较多怎么优化

懒加载,能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。

相关文章

网友评论

      本文标题:web前端迈外迪面试题

      本文链接:https://www.haomeiwen.com/subject/cqviyttx.html