web前端知识汇总41-60

来源:互联网 发布:做好淘宝网的免费流量 编辑:程序博客网 时间:2024/05/02 01:20

41、什么是focus?如何来避免focus

focus(无样式内容闪烁、文档样式闪烁)由于CSS引入使用了@import或者存在多个style标签以及CSS文件在页面底部引入使得CSS文件加载在HTML之后导致页面闪烁、花屏

避免方法:用link来加载CSS文件,放在head标签里面

42、闭包

如果一个函数访问了它的外部变量,那么他就是一个闭包(这种说法在我看了《你不知道的JavaScript》之后觉得用“内部函数被定义它的函数的外部区域调用的时候就产生了闭包”来解释更为合理)

function里嵌套function时,内部的function可以访问外部function里面的变量

JavaScript语言,函数内部可以直接读取全局变量

函数外部无法读取函数内部的局部变量

函数内部声明变量时一定要用var,如果不用那么其实声明的是一个全局变量

出于种种原因我们有时要得到函数内部的局部变量,解决方法就是在函数内部在定义一个函数

JavaScript语言特有的链式作用域,子对象会一级一级地向上寻找所有父对象的变量,所以父对象的所有变量对子对象都是可见的

闭包的用途:一个是可以读取函数内部的变量,一个是让这些变量的值始终保存在内存中

下面给出以下例子:

<script>//    var n=99;//    function f1(){//        alert(n);//    }//    f1();////    输出99========================================//    var m=0;//    function f2(){//        var m=1;//        function f3(){//            alert(m);//        }//        return f3;//    }//    var re=f2();//    re();//    //输出1,这就是闭包的简单应用=====================================//    var name1="the window";//    var object1={//        name1:"my object",//        getNameFunc:function(){//            return function(){//                return this.name1;//            };//        }//    };//    alert(object1.getNameFunc()());//    输出the window
========================================
//    var name="the window";//    var object={//        name:"my object",//        getNameFunc:function(){//            var that=this;//            return function(){//              return that.name;//            };//        }//    };//    alert(object.getNameFunc()());//    输出my object =======================================</script>
43、你使用过哪些JavaScript库?

本人常用是jQuery

44、请说出三种减低页面加载时间的方法

压缩CSS、js文件

合并CSS、js文件,减少http请求

外部CSS、js文件放在最底下

减少DOM操作,尽可能用变量代替不必要的DOM操作

优化图片

标明图片的高度宽度(如果浏览器没有找到这两个参数,他需要一边下载图片一边计算大小,如果图片很多着实影响速度和体验,给定了高度宽度浏览器可以先腾出位置继续加载后面的内容)

45、哈希表

hash table也叫散列表,是根据关键码值而直接进行访问的数据结构

也就是说,他通过把关键码值映射到表中的一个位置来访问记录,以加快查找速度,这个映射函数也叫作散列函数,存放记录的数组叫做散列表

46、添加、删除、替换、插入到某个节点的方法

obj.appendChild()

obj.removeChild()

obj.replaceChild()

obj.insertBefor()

47、document load和document ready的区别

ready表示文档结构已经加载完成(不包括图片等非文字媒体文件)原生中没有这个方法,jQuery中有$(document).ready(function(){});

onload指页面中包括图片文字等所有元素都加载完再执行。

48、如何阻止事件冒泡和默认事件

p在div里面,p和div都有一个onclick事件,为了阻止事件冒泡对非IE则用stopPropagation,对IE则用cancelBubble

阻止默认事件:非IE用preventDefault,IE用return false;

49、请谈一下对网页标准和标准制定机构重要性的理解

W3C存在的意义就是让浏览器兼容性问题尽量减少,首先是对浏览器开发者的约束,然后是对开发者的约束

50、使用XHTML的局限性?

虽然代码更加优雅但缺少容错性,不利于快速开发

51、如果把HTML5看做一个开放平台,那他的构建模块有哪些?

header nav seciton footer等

52、线程与进程的区别

一个程序至少要有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

线程在执行过程中与进程还是有区别的,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在程序之中由程序提供多个线程执行控制

53、请解释一下*{box-sizing:border-box;}的作用,并且说明使用它有什么好处?

说到IE的bug,在IE6以前的版本中,IE对盒模型的解析出现一些问题,跟其他浏览器不同,将border和padding都包含在width之内而另外一些浏览器则与他相反,是不包括border和padding的。而我们在开发过程中会发现有时候如果对网页中的大区域进行设置时将border、padding计算到width和height之内反而更加灵活了,但W3C规定他们不能被包含在其中,考虑到这个问题,CSS3中引入了一个新的属性:box-sizing,它具有content-box和border-box两个值。content-box时遵循W3C 标准,border-box时遵循IE

54、解释下事件代理

JavaScript事件代理是一种简单的技巧,通过他可以把事件处理器添加到一个父级元素上,这样就避免了把事件处理器添加到多个子级元素上。当我们需要对很多元素添加事件的时候,可以通过将事件添加到他们的父节点而将事件委托给父节点来触发处理函数。这主要得益于浏览器的事件冒泡机制。事件代理用到了两个在JavaScript事件中常被忽略的特性:事件冒泡以及目标元素

55、解释下JavaScript中的this是如何工作的?

this永远指向函数运行时所在的对象而不是函数被创建时所在的对象。匿名函数或不处于任何对象中的函数指向window

如果是 call apply with制定的this是谁就是谁

普通的函数调用,函数被谁调用this就是谁

56、请描述以下变量的区别:null,undefined或undeclared?

null表示没有对象,即该出不应该有值

undefined表示缺少值,就是此处应该有一个值但是还没有定义

null表示无值,undefined表示一个为声明的变量或已经声明但是还没有赋值的变量,或一个并不存在的对象属性

==运算符将两者看做相等,如果要区分两者要使用===或typeof

var exp=null;if(!exp&&typeof(exp)!="undefined"&&exp!=0){    alert("is null");}
57、"i'am a lasagna hog".split("").reverse().join("");的返回值是?

"goh nagasal a ma'i"

58、新的HTML5文档类型和字符集是?

<doctype html>

<meta charset="utf-8">

59、HTML5的canvas元素有什么用?

canvas元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在HTML上进行图形操作

60、IE和DOM事件流的区别是什么?

执行顺序不一样,DOM事件流同时支持冒泡和捕获两种事件类型,但是捕获事件先发生,两种事件会触及DOM中的所有对象,从document对象开始也在document对象结束;IE只支持冒泡事件。

参数不一样,IE与DOM相比少了第三个参数true/false。

事件加不加on

this指向问题,IE的this永远指向window object这个全局对象

(在浏览器解析事件的时候,有两种触发方式,一种叫做冒泡bubbling,另外一种叫做捕获capturing。冒泡的方式效果就是当一个DOM元素的某个事件被触发时,依次他的父元素的事件也被触发,一直传递到最顶层的body元素为止。而捕获的方式正好相反,当某个元素的事件触发时,先从最顶层的body元素事件触发开始一直传递到真正被触发的元素为止。)

0 0
原创粉丝点击