失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Web前端开发——BAT面试题汇总及答案03

Web前端开发——BAT面试题汇总及答案03

时间:2020-06-22 04:15:24

相关推荐

Web前端开发——BAT面试题汇总及答案03

目录

目录

5、JavaScript this 指针、闭包、作用域

6、事件委托是什么

7、闭包是什么,有什么特性,对页面有什么影响

8、如何阻止事件冒泡和默认事件

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

10、javascript 的本地对象,内置对象和宿主对象

11、document load 和 document ready 的区别

12、、”== ”和“===”的不同

13、已知 ID 的 Input 输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

14、希望获取到页面中所有的 checkbox 怎么做?(不使用第三方框架)

15、设置一个已知 ID 的 DIV 的 html 内容为 xxxx,字体颜色设置为黑色(不使用第三方框架)

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

17、看下列代码输出为何?解释原因。

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

19、输出今天的日期,以 YYYY-MM-DD 的方式,比如今天是 年 9 月 26 日,则输出 -09-26

20、看下列代码,将会输出什么?(变量声明提升)

21、把两个数组合并,并删除第二个元素。

22、怎样添加、移除、移动、复制、创建和查找节点(原生 JS,实在基础,没细写每一步)

23、正则表达式构造函数 var reg=new RegExp(“xxx”)与正则表达字面量 varreg=//有什么不同?匹配邮箱的正则表达式?

24、以下两个变量 a 和 b,a+b 的哪个结果是 NaN? 答案( C )

5、JavaScript this 指针、闭包、作用域

this:指向调用上下文

闭包:内层作用域可以访问外层作用域的变量

作用域:定义一个函数就开辟了一个局部作用域,整个 js 执行环境有一个全局作用域

6、事件委托是什么

符合 W3C 标准的事件绑定 addEventLisntener /attachEvent

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

7、闭包是什么,有什么特性,对页面有什么影响

闭包就是能够读取其他函数内部变量的函数。

闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都

永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数

8、如何阻止事件冒泡和默认事件

e. stopPropagation();//标准浏览器

event.canceBubble=true;//ie9 之前

阻止默认事件:

为了不让 a 点击之后跳转,我们就要给他的点击事件进行阻止

return false

e.preventDefault();

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

obj.appendChild()obj.insertBefore() //原生的 js 中不提供 insertAfter();obj.replaceChild()//替换obj.removeChild()//删除

10、javascript 的本地对象,内置对象和宿主对象

本地对象为 array obj regexp 等可以 new 实例化

内置对象为 gload Math 等不可以实例化的

宿主为浏览器自带的 document,window 等

11、document load 和 document ready 的区别

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

window.onload:不仅仅要在结构和样式加载完,还要执行完所有的样式、图片这些资源文

件,全部加载完才会触发 window.onload 事件

Document.ready 原生中没有这个方法,jquery 中有 $().ready(function)

12、、”== ”和“===”的不同

前者会自动转换类型

后者不会

1==”1”

null==undefined

===先判断左右两边的数据类型,如果数据类型不一致,直接返回 false

之后才会进行两边值的判断

13、已知 ID 的 Input 输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

document.getElementById(“ID”).value

14、希望获取到页面中所有的 checkbox 怎么做?(不使用第三方框架)

var domList = document.getElementsByTagName(‘input’)var checkBoxList = [ ]; //返回的所有的 checkboxvar len = domList.length; //缓存到局部变量while (len–) { //使用 while 的效率会比 for 循环更高if (domList[len].type == ‘checkbox’) {checkBoxList.push(domList[len]);}}

15、设置一个已知 ID 的 DIV 的 html 内容为 xxxx,字体颜色设置为黑色(不使用第三方框架)

var dom = document.getElementById(“ID”);dom.innerHTML = “xxxx”dom.style.color = “#000”

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

直接在 DOM 里绑定事件:

在 JS 里通过 onclick 绑定:xxx.onclick = test

通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)

那么问题来了,Javascript 的事件流模型都有什么?

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

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

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

17、看下列代码输出为何?解释原因。

var a;alert(typeof a); // “undefined”//alert(b); // 报错b=10;alert(typeof b);//”number”

解释:Undefined 是一个只有一个值的数据类型,这个值就是“undefined”,在使用 var

声明变量但并未对其赋值进行初始化时,这个变量的值就是 undefined。注意未申明的变量和声明了未赋值的是不一样的。

undefined 会在以下三种情况下产生:

1、 一个变量定义了却没有被赋值

2、 想要获取一个对象上不存在的属性或者方法:

3、 一个数组中没有被赋值的元素

注意区分 undefined 跟 not defnied(语法错误)是不一样的

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

var a = null;alert(typeof a); //object

解释:null 是一个只有一个值的数据类型,这个值就是 null。表示一个空指针对象,所以

用 typeof 检测会返回”object”。

19、输出今天的日期,以 YYYY-MM-DD 的方式,比如今天是 年 9 月 26 日,则输出 -09-26

var d = new Date();// 获取年,getFullYear()返回 4 位的数字var year = d.getFullYear();// 获取月,月份比较特殊,0 是 1 月,11 是 12 月var month = d.getMonth() + 1;// 变成两位month = month < 10 ? '0' + month : month;// 获取日var day = d.getDate();day = day < 10 ? '0' + day : day;alert(year + '-' + month + '-' + day);

20、看下列代码,将会输出什么?(变量声明提升)

var foo = 1;function(){console.log(foo);var foo = 2;console.log(foo);}

答案:输出 undefined 和 2。上面代码相当于:

var foo = 1;function(){var foo;console.log(foo); //undefinedfoo = 2;console.log(foo); // 2;}

函数声明与变量声明会被 JavaScript 引擎隐式地提升到当前作用域的顶部,但是只提升名

称不会提升赋值部分。

21、把两个数组合并,并删除第二个元素。

var array1 = ['a','b','c'];

var bArray = ['d','e','f'];

var cArray = array1.concat(bArray);

cArray.splice(1,1);

22、怎样添加、移除、移动、复制、创建和查找节点(原生 JS,实在基础,没细写每一步)

1)创建新节点

createDocumentFragment() //创建一个 DOM 片段

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

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

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

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

3)查找

getElementsByTagName() //通过标签名称

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

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

23、正则表达式构造函数 var reg=new RegExp(“xxx”)与正则表达字面量 varreg=//有什么不同?匹配邮箱的正则表达式?

答案:当使用 RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要

双反斜杠(即\表示一个\)。使用正则表达字面量的效率更高。

邮箱的正则匹配:

var regMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

24、以下两个变量 a 和 b,a+b 的哪个结果是 NaN? 答案( C )

A、var a=undefind; b=NaN //拼写

B、var a=‘123’; b=NaN//字符串

C、var a =undefined , b =NaN

D、var a=NaN , b=‘undefined’//”Nan”

25、var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?答案( B )

A、34 B、35 C、36 D、37

var a=10; b=20; c=4; ++b+c+a++ //21+4+10=3

如果觉得《Web前端开发——BAT面试题汇总及答案03》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。