做一些面试题目(JavaScript部分)

1.js是什么,js和html 的开发如何结合?

 JavaScript 是广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能。

 通过DOM把HTML分析为节点来进行相应的结合开发。

2. 怎样添加、移除、移动、复制、创建和查找节点?

 appendChlid添加节点;removeChild移除节点;cloneNode复制节点;createElement创建节点;getElementById,getElementsByTagName,getElementsByName查找节点

3. 怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别?

4.面向对象编程:b怎么继承a?
fuction a(){
}
var b=a;

5. 看看下面alert的结果是什么?

function b(x, y, a) {
arguments[2] = 10;
alert(a);
}
b(1, 2, 3);

 都是10

6. 请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象

var url="http://test.com/index.php?key0=0&key1=1&key2=2";
function parseQueryString(url)
{
    
    var str=url.split("?")[1];//取右边的
    var items=str.split("&");
    var obj={};
    var arr;
    for(var i=0;i<items.length;i++)
    {
        
        arr=items[i].split("=");
        obj[arr[0]]=arr[1];
    }
return obj;
    
}

7.ajax是什么?   ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?

AJAX = Asynchronous JavaScript and XML异步刷新
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX的交互模型就是AJAX在浏览器端准备了一个执行引擎,一边接收用户提交的需求,一边准备在准备好后台返回的数据。如搜索补全和验证用户名
同步就是一条线执行完,异步就是各条线执行各自的。
跨域问题解决的精髓就是用ajax请求一个包含服务器语言的页面,用服务器语言去获取跨域所请求信息,然后返回给请求数据页。
http://blog.csdn.net/lovingprince/article/details/2954675
在这里给出了比较详细的三种方法:
1、服务器 Proxy: A 的页面 JS 需要访问域 B 下的链接获取数据,该方案在域 A 的服务器端建立一个 Proxy 程序 ( 可能是 ASP servlet 等任何服务端程序 ) ,域 A 的页面 JS 直接调用本域下的 Proxy 程序, proxy 程序负责将请求发送给域 B 下的链接并获取到数据,最后再通过 Proxy 将数据返回给页面 JS 使用。
2、Script 标签:域 A 页面 http://Jipiao.taobao.com/test.htm 的 head 中写一个空的 Script 标签
<html>   
<head>   
<mce:script id=”remoteScript” type=”text/javascript” src="””" mce_src="””" />
 </head>   
 <body>   
<script type=”text/javascript” >   
      
      Var remoteScript=document.getElementById(‘remoteScript’);   
      
      remoteScript.src=” www.baidu.com/xxxxx.do”;// 域 B 的链接   
      
      alert(remote.test);// 使用域 B 返回的 JSON 数据   
      
      alert(f[0]);   
    </mce:script>   
      
      </body>   
 </html>   

注意:这种方案要求域 B 返回的数据必须是合法的 JSON 格式或者如 JS 文件的格式。

3、隐藏 iframe: 即域 A jipiao.taobao.com/yyyy.htm 的页面上写一个隐藏的 iframe

这里列举的三种方案各有优缺点:

    Proxy 方案优点是可以适用用于几乎所有的跨域访问,而且只需要要一个域中进行开发,另一个域可以提供任何类型格式的数据。缺点是这种方案经过了中间 Proxy ,所以延迟可能稍微大一点,并且会加重本域服务器的负荷,开发工作量也稍微大一点。

    Script 标签的方案可以说是非常简单的,不用几行代码就搞定了事,不过它对返回的数据格式要求有点严格,只能是 Json 格式数据 , 如果是其他格式的数据,那么这种方法就无能为力了。

    隐藏 iframe 方式也很简单,它可以处理任何返回的数据格式,但它只适用在具有同一个父域下的跨域请求上,并且要求其他域得配合开发,即需要设置 document.domain

8.什么是闭包?
 子函数可以使用父函数中的局部变量,这种行为就叫做闭包。它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

使用闭包的注意点

1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

9.下面这个ul,如何点击每一列的时候alert其index?
<ul id=”test”><li>这是第一条</li><li>这是第二条</li><li>这是第三条</li></ul>
原文地址:https://www.cnblogs.com/pilee/p/3561946.html