js、jQuery、ajax面试题

1.javascript的typeof返回哪些数据类型.

答案:string,boolean,number,undefined,function,object

2.例举3种强制类型转换和2种隐式类型转换?

答案:强制(parseInt,parseFloat,number)

隐式(=====)

3.split()join()的区别

答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串

4.数组方法pop()push()unshift()shift()

答案:push()尾部添加pop()尾部删除

unshift()头部添加shift()头部删除

5.IE和标准下有哪些兼容性的写法

答案:

Var ev=ev||window.event

document.documentElement.clientWidth||document.body.clientWidth

Var target=ev.srcElement||ev.target

6.ajax请求的时候get和post方式的区别

答案:1、一个在url后面,一个放在虚拟载体里面

2、get有大小限制(只能提交少量参数)

3、安全问题

4、应用不同,请求数据和提交数据

7.call和apply的区别

答案:Object.call(this,obj1,obj2,obj3)

Object.apply(this,arguments)

8.ajax请求时,如何解析json数据

答案:使用JSON.parse

9.事件委托是什么

答案:利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!

10.闭包是什么,有什么特性,对页面有什么影响

答案:闭包就是能够读取其他函数内部变量的函数,使得函数不被GC回收,如果过多使用闭包,容易导致内存泄露

11.如何阻止事件冒泡

答案:ie:阻止冒泡ev.cancelBubble=true;非IEev.stopPropagation();

12.如何阻止默认事件

答案:(1)return false;(2)ev.preventDefault();

13.添加删除替换插入到某个接点的方法

答案:

1)创建新节点

createElement()//创建一个具体的元素

createTextNode()//创建一个文本节点

2)添加、移除、替换、插入

appendChild()//添加

removeChild()//移除

replaceChild()//替换

insertBefore()//插入

3)查找

getElementsByTagName()//通过标签名称

getElementsByName()//通过元素的Name属性的值

getElementById()//通过元素Id,唯一性

14.解释jsonp的原理,以及为什么不是真正的ajax

答案:动态创建script标签,回调函数

Ajax是页面无刷新请求数据操作

15.document load和document ready的区别

答案:document.onload是在结构和样式,外部js以及图片加载完才执行js

document.ready是dom树创建完成就执行的方法,原生种没有这个方法,

jquery中有$().ready(function)

16.””和“=”的不同

答案:前者会自动转换类型,再判断是否相等

后者不会自动类型转换,直接去比较

17.函数声明与函数表达式的区别?

答案:在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。

18.对作用域上下文和this的理解,看下列代码:

varUser={

count:1,

getCount:function(){

return this.count;

}

};

console.log(User.getCount());

var func=User.getCount;

console.log(func());

问两处console输出什么?为什么?

答案:是1和undefined。

func是在window的上下文中被执行的,所以不会访问到count属性。

19.看下面代码,给出输出结果。

for(vari=1;i<=3;i++){//建议使用let可正常输出i的值

setTimeout(function(){

console.log(i);

},0);

};

答案:4     4    4

原因:Javascript事件处理器在线程空闲之前不会运行。

20.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?

box.onlick=function(){}

box.addEventListener("click",function(){},false);

<buttononclick="xxx()"></button>

21.Javascript的事件流模型都有什么?

答案:1、“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

2、“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

3、“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

22.看下列代码,输出什么?解释原因。

var a=null;

alert(typeof a);

答案:object

解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。

23.判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30

答案:Var reg=/^[a-zA-Z]w{5,29}$/;

24.回答以下代码,alert的值分别是多少?

<script>

Var a=100;

functiontest(){

alert(a);

a=10;//去掉了var就变成定义了全局变量了

alert(a);

}

test();

alert(a);

</script>

正确答案:100,10,10

25.javaScript的2种变量范围有什么不同?

全局变量:当前页面内有效

局部变量:函数方法内有效

26.null和undefined的区别?

1、null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

2、当声明的变量还未被初始化时,变量的默认值为undefined。null用来表示尚未存在的对象。

3、undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

(1)变量被声明了,但没有赋值时,就等于undefined。

(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

null表示"没有对象",即该处不应该有值。典型用法是:

(1)作为函数的参数,表示该函数的参数不是对象。

(2)作为对象原型链的终点。

27.new操作符具体干了什么呢?

1、创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。

2、属性和方法被加入到this引用的对象中。

3、新创建的对象由this所引用,并且最后隐式的返回this。

28.js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)、按需异步载入js

29.Flash、Ajax各自的优缺点,在使用中如何取舍?

Flashajax对比:

(1)Flash适合处理多媒体、矢量图形、访问机器;对CSS、处理文本上不足,不容易被搜索。

(2)ajax对CSS、文本支持很好,支持搜索;多媒体、矢量图形、机器访问不足。

共同点:与服务器的无刷新传递消息、用户离线和在线状态、操作DOM

30.写一个获取非行间样式的函数

functiongetStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];

}else{

getComputedStyle(obi,false)[attr];

}

}

原文地址:https://www.cnblogs.com/wangxue13/p/13485218.html