Sogo2015前端面试题

1.下列描述错误的是(D)

HTTP状态码302表示暂时性转移
domContentLoaded事件早于onload事件
IE6/7/8不支持事件捕获
localStorage存储的数据,在刷新页面后会消失

HTTP状态码302表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取;
onload事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了,domContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。
web storage有以下几种对象:
sessionStorage:存储特定于某个会话的数据,该数据只保留到浏览器关闭。
globalStorage:目的是跨越会话存储数据,不过要指定哪些域可以访问该数据。如果不使用 removeItem() 或 delete 删除,或者用户未清除浏览器缓存,存储在globalStorage上的数据会一直保留在磁盘上。所以globalStorage非常适合在客户端存储文档或长期保留用户偏好设置。
localStorage:在HTML5中作为持久保持客户端数据的方案取代了globalStorage。它不能被指定访问规则,要访问localStorage,页面必须来自同一个域名,使用同一种协议,在同一个端口上。它的数据也保留到通过JavaScript删除或用户清除浏览器缓存。
2.以下Js程序的输出是什么()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<SCRIPT LANGUAGE="JavaScript">
    var a="undefined";
    var b="false";
    var c="";
    function assert(aVar){
        if(aVar)     
            alert(true);
        else  
            alert(false);
    }
    assert(a);
    assert(b);
    assert(c);
</SCRIPT>
true, true, false, 因为字符串是变量
3.正则表达式/^\d*\*[^\d]*[\w]{6}$/,下面的字符串中哪个能正确匹配?AC
***abcABCD_89
abc*abcABCDEF
123*abcABCD_89
123*ABCabcd-89
/^表示匹配输入字符串开始的位置, \d*表示零次或多次数字, \*是转义字符*,[^\d]*表示 零次或多次非数字,[\w]{6}表示所有字符6次,$/表示匹配输入字符串结尾的位置。 
B的*之前一定是数字,排除;
D有连字符-,排除。
A其匹配\d*为零次,再匹配一个*,[^\d]*表示 零次或多次非数字 ,这里匹配**abcA, [\w]{6}匹配 BCD_89;
4.
function Foo(){
     var i=0;
     return function(){
         document.write(i++);
     }
}
var f1=Foo(),
f2=Foo();
f1();
f1();
f2();
请问以上程序的输出是()
010
这是一个闭包,闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 
这里的局部变量i,对f1()来说是全局变量,对f2()来说也是全局变量,但是f1()的i跟f2()的i又是相互独立相互不可见的,f1()每执行一次,f1()的i就加一,f2()每次执行一次,f2()的i就加油,但是相互之间不影响,因此结果是010
5.以下哪一个选项是html5的dtd?
<!DOCTYPE html>
6/现有如下html结构
<ul>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
</ul>
运行如下代码:
1
2
3
4
5
6
7
    var elements=document.getElementsByTagName('li');
    var length=elements.length;
    for(var i=0;i<length;i++){
        elements[i].onclick=function(){
        alert(i);
    }
 }
依次点击4个li标签,哪一个选项是正确的运行结果()? 4 4 4 4
这里考的是JS的运行机制! 事件(click,focus等等),定时器(setTimeout和setInterval),ajax,都是会触发异步,属于异步任务;js是单线程的,一个时间点只能做一件事,优先处理同步任务; 按照代码从上往下执行,遇到异步,就挂起,放到异步任务里,继续执行同步任务,只有同步任务执行完了,才去看看有没有异步任务,然后再按照顺序执行! 这里for循环是同步任务,onclick是异步任务,所以等for循环执行完了,i变成4了,注意:这里因为i是全局变量,最后一个i++,使得i为4(后面的onclick函数,最后在循环外面执行,不受i<length限制); 所以for循环每执行一次,onclick事件函数都会被挂起一次,共4次; for循环结束后,点击事件 触发了4个onclick函数,接着输出4个4!
7.下面列出的浏览器,无webkit内核的是()D
chrome
Safari
搜狗浏览器
firefox
posted @ 2020-07-25 23:56  油闷大虾啊  阅读(276)  评论(0编辑  收藏  举报