您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页JavaScript经典面试题系列

JavaScript经典面试题系列

来源:华佗养生网
JavaScript经典⾯试题系列

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

  Object number function boolean underfind

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

  强制(parseInt,parseFloat,number)  隐式(== – ===)

3.split() join() 的区别

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

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

  Push()尾部添加 pop()尾部删除  Unshift()头部添加 shift()头部删除

5.事件绑定和普通事件有什么区别

  事件绑定就是针对dom元素的事件,绑定在dom元素上,普通事件即为⾮针对dom元素的事件、普通添加事件的⽅法不⽀持添加多个事件,最下⾯的事件会覆盖上⾯的,⽽事件绑定(addEventListener)⽅式添加事件可以添加多个。

  提⽰:addEventListener不兼容低版本IE,使⽤addEventListener添加事件之前,请先处理兼容问题。普通添加事件的⽅法:

1 var btn = document.getElementById(\"hello\");2 btn.onclick = function(){3 alert(1);4 }

5 btn.onclick = function(){6 alert(2);7 }

执⾏上⾯的代码只会alert 2

事件绑定⽅式添加事件:

1 var btn = document.getElementById(\"hello\");2 btn.addEventListener(\"click\function(){3 alert(1);4 },false);

5 btn.addEventListener(\"click\function(){6 alert(2);7 },false);

执⾏上⾯的代码会先alert 1 再 alert 2

6.IE和DOM事件流的区别

  1.执⾏顺序不⼀样、  2.参数不⼀样  3.事件加不加on  4.this指向问题

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

  Var ev = ev || window.event

  document.documentElement.clientWidth || document.body.clientWidth  Var target = ev.srcElement||ev.target

8.ajax请求的时候get 和post⽅式的区别

  ⼀个在url后⾯ ⼀个放在虚拟载体⾥⾯  有⼤⼩  安全问题

  应⽤不同 ⼀个是论坛等只需要请求的,⼀个是类似修改密码的

9.call和apply的区别

  Object.call(this,obj1,obj2,obj3)  Object.apply(this,arguments)

10.ajax请求时,如何解释json数据

  使⽤eval parse 鉴于安全性考虑 使⽤parse更靠谱  11.b继承a的⽅法

12.写⼀个获取⾮⾏间样式的函数⽅法1:

function getStyle(obj, attr, value) { if (!value) {

if (obj.currentStyle) {

return obj.currentStyle(attr) }

else {

obj.getComputedStyle(attr, false) } }

else {

obj.style[attr] = value }}

⽅法2

function getStyle(obj, attr) {

return obj.currentStyle ? obj.currentStyle : getComputedStyle(obj)[attr];}

13.事件委托是什么

  让利⽤事件冒泡的原理,让⾃⼰的所触发的事件,让他的⽗元素代替执⾏!  

14.闭包是什么,有什么特性,对页⾯有什么影响

  闭包就是能够读取其他函数内部变量的函数。⼀个拥有许多变量和绑定了这些变量的环境的表达式(通常是⼀个函数),因⽽这些变量也是该表达式的⼀部分。闭包的特点:

  1. 作为⼀个函数变量的⼀个引⽤,当函数返回时,其处于激活状态。

  2. ⼀个闭包就是当⼀个函数返回时,⼀个没有释放资源的栈区。

  简单的说,script允许使⽤内部函数---即函数定义和函数表达式位于另⼀个函数的函数体内。⽽且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中⼀个这样的内部函数在包含它们的外部函数之外被调⽤时,就会形成闭包。

1 (function(x, y){2 alert(x + y); 3 })(2, 3);

15.如何阻⽌事件冒泡和默认事件

  canceBubble return false

16.添加 删除 替换 插⼊到某个接点的⽅法

  obj.appendChidl()  obj.innersetBefore  obj.replaceChild  obj.removeChild

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

  动态创建script标签,回调函数  Ajax是页⾯⽆刷新请求数据操作

18.javascript的本地对象,内置对象和宿主对象

  本地对象为array obj regexp等可以new实例化  内置对象为gload Math 等不可以实例化的  宿主为浏览器⾃带的document,window 等

19.document load 和document ready的区别

  Document.onload 是在结构和样式加载完才执⾏js

  Document.ready原⽣种没有这个⽅法,jquery中有 $().ready(function)

20.”==”和“===”的不同

  ”==”与”===”是不同的,⼀个是判断值是否相等,⼀个是判断值及类型是否完全相等。前者会⾃动转换类型,后者不会。

  先说 ===,这个⽐较简单。下⾯的规则⽤来判断两个值是否===相等:     1、如果类型不同,就[不相等]

    2、如果两个都是数值,并且是同⼀个值,那么[相等];(!例外)的是,如果其中⾄少⼀个是NaN,那么[不相等]。(判断⼀个值是否是NaN,只能⽤isNaN()来判断)

    3、如果两个都是字符串,每个位置的字符都⼀样,那么[相等];否则[不相等]。     4、如果两个值都是true,或者都是false,那么[相等]。

    5、如果两个值都引⽤同⼀个对象或函数,那么[相等];否则[不相等]。     6、如果两个值都是null,或者都是undefined,那么[相等]。   再说 ==,根据以下规则:

    1、如果两个值类型相同,进⾏ === ⽐较。

    2、如果两个值类型不同,他们可能相等。根据下⾯规则进⾏类型转换再⽐较:     a、如果⼀个是null、⼀个是undefined,那么[相等]。

    b、如果⼀个是字符串,⼀个是数值,把字符串转换成数值再进⾏⽐较。

    c、如果任⼀值是 true,把它转换成 1 再⽐较;如果任⼀值是 false,把它转换成 0 再⽐较。

    d、如果⼀个是对象,另⼀个是数值或字符串,把对象转换成基础类型的值再⽐较。对象转换成基础类型,利⽤它的toString或者valueOf⽅法。js核⼼内置类,会尝试valueOf先于toString;例外的是Date,Date利⽤的是toString转换。    e、任何其他组合,都[不相等]。

  举例:

    \"1\" == true

    类型不等,true会先转换成数值 1,现在变成 \"1\" == 1,再把\"1\"转换成 1,⽐较 1 == 1, 相等。   = 赋值运算符   == 等于

  === 严格等于   例:

    var a = 3;     var b = \"3\";     a==b 返回 true     a===b 返回 false     因为a,b的类型不⼀样

    ===⽤来进⾏严格的⽐较判断

简⽽⾔之就是“==”只要求值相等。“===”要求值和类型都相等。

21.javascript的同源策略  ⼀段脚本只能读取来⾃于同⼀来源的窗⼝和⽂档的属性,这⾥的同⼀来源指的是主机名、协议和端⼝号的组合22.编写⼀个数组去重的⽅法

window.onload = function () {

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; for (var i = 0; i < arr.length; i++) {

for (var j = i+1; j < arr.length; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1); j--; } } }

alert(arr); }

23.编写⼀个数组从⼤到⼩的排序⽅法

1 //数组排序,从⼤到⼩,⽅法1:

2 var arrSimple=new Array(1,8,7,6); 3 arrSimple.sort();

4 document.write(arrSimple.join()); 5

6 //数组排序,从⼤到⼩,⽅法2:

7 var arrSimple2=new Array(1,8,7,6); 8 arrSimple2.sort(function(a,b){

9 return b-a;10 });

11 document.write(arrSimple2.join());12

13 //解释:a,b表⽰数组中的任意两个元素,若return > 0 b前a后;reutrn < 0 a前b后;a=b时存在浏览器兼容简化⼀下:a-b输出从⼩到⼤排序,b-a输出从⼤到⼩排序。14

24.如何交换两个数的位置

var a=10;var b=20;a= a+b;//30b= a-b;//10a= a-b;//20

alert('a:'+a + 'b:'+b);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务