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方式的区别
答案:
一个在url后面 ,一个放在虚拟载体里面
get有大小限制(只能提交少量参数)
安全问题
应用不同 ,请求数据和提交数据
7. call和apply的区别
Object.call(A, args1,args2); 即A对象调用B对象的方法
Object.apply(A, arguments); 即A对象调用B对象的方法
call 与 apply 的相同点:
方法的含义是一样的,即方法功能是一样的;
第一个参数的作用是一样的;
call 与 apply 的不同点:两者传入的列表形式不一样
call可以传入多个参数;
apply只能传入两个参数,所以其第二个参数往往是作为数组形式传入
8. ajax请求时,如何解析json数据
答案:使用JSON.parse
9. 闭包是什么,有什么特性,对页面有什么影响
答案:闭包就是能够读取其他函数内部变量的函数,使得函数不被GC回收,如果过多使用闭包,容易导致内存泄露
10. 如何阻止事件冒泡
答案:ie:阻止冒泡ev.cancelBubble = true; 非IE ev.stopPropagation();
11. 如何阻止默认事件
答案:(1)return false;(2) ev.preventDefault();
12. 添加 删除 替换 插入到某个接点的方法
答案:
- 创建新节点
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点 - 添加、移除、替换、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入 - 查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
13. 解释jsonp的原理,以及为什么不是真正的ajax
答案:动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作
14. document load 和document ready的区别
答案:document.onload 是在结构和样式,外部js以及图片加载完才执行js
document.ready是dom树创建完成就执行的方法,原生种没有这个方法,jquery中有 $().ready(function)
15. ”==”和“===”的不同
答案:前者会自动转换类型,再判断是否相等
后者不会自动类型转换,直接去比较
16. 函数声明与函数表达式的区别?
在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。
17. Javascript的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
18. javaScript的2种变量范围有什么不同?
全局变量:当前页面内有效
局部变量:函数方法内有效
19. new操作符具体干了什么呢?
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。