JavaScript、ES6基础面试题及答案解析②
-
- 1、js基本数据类型有哪些?
- 2、Ajax如何使用
- 3、如何判断一个数据类型是NaN?
- 4、闭包是什么?有什么特性?对页面有什么影响?
- 5、谈谈js中常见的内存泄漏:
- 6、事件委托是什么?如何确定事件源(Event.target 谁调用谁就是事件源)
- 7、什么是事件冒泡?怎么阻止事件冒泡?
- 8、本地存储与cookie的区别
- 9、ES6新特性
- 10、谈谈对let、var与const的区别的理解
- 11、数组方法有哪些?请简述:
- 12、说出两种以上数组去重的方法
- 13、什么是面试对象(OOP)请简述
- 14、说说普通函数和构造函数的区别
- 15、请简述原型、原型链、(原型)继承
- 16、Promise的理解
- 17、请简述async的用法
- 18、一个页面从输入url到页面加载显示完成,这个过程都发生了什么?
- 19、请简述js中 .call()与 .apply() 的区别。
- 20、为什么会造成跨域?请简述同源策略。
- 21、请说说This的指向问题
- 22、什么是jsonp 工作原理是什么?他为什么不是真正的ajax?
- 23、请说出简单的类与继承
- 24、简述同步与异步的区别,阻塞与非阻塞的区别
- 25、为什么js是弱类型语言?
- 26、箭头函数与普通函数的区别
- 27、For循环与map循环的区别?
- 28、原型和继承,prototype,call和apply继承的区别(第一个参数是相同的,第二个的区别在哪)
- 29、深浅拷贝是什么?如何实现?
- 30、什么时候用深拷贝/浅拷贝?
- 31、什么是js内存泄露?
- 32、什么是csrf攻击?
- 33、预加载和懒加载的区别,预加载在什么时候加载合适?
- 34、谈谈Js的函数节流和函数防抖的区别
1、js基本数据类型有哪些?
答:字符串String,数值Number,布尔 boolean,null,undefined,对象,数组
2、Ajax如何使用
一个完整的AJAX请求包括五个步骤:
-
创建XMLHTTPRequest对象
-
使用open方法创建http请求,并设置请求地址:
xhr.open(get/post , url , async , true(异步) )经常使用前三个参数 -
设置发送的数据,用send发送请求
-
注册事件(给ajax设置事件)
-
获取相应并更新页面
3、如何判断一个数据类型是NaN?
NaN 非数字 但是用typeof 检测是 Number 类型
- 利用NaN的定义,用typeof判断是否为Number类型并且判断是否满足isnan
- 利用NaN是唯一一个不等于任何自身的特点 n! == n
- 利用ES6中提供的Object.is()方法(判断两个值是否相等)n==nan
js中null与undefined的区别:
相同点:用if判断时,;两者都会被转为false
不同点:
- number转换的值不同 number(null)为0 number(undefined)为NaN
- null表示一个被值被定义了,但是这个值是空值
- undefined 变量声明但未赋值
4、闭包是什么?有什么特性?对页面有什么影响?
闭包可以简单理解成:定义在一个函数内部的函数。其中一个内部函数在包含他们的外部函数之外被调用时,就会形成闭包。
特点:
- 函数嵌套函数。
- 函数内部可以引用外部的参数和变量。
- 参数和变量不会被垃圾回收机制回收。
使用: - 读取函数内部的变量;
- 这些变量的值始终保存在内存中,不会再外层函数调用后被自动清除。
优点: - 变量长期驻扎在内存中;
- 避免全局变量的污染;
- 私有成员的存在;
**缺点:**会造成内存泄漏
5、谈谈js中常见的内存泄漏:
- 意外的全局变量
- 被遗忘的计时器或回调函数
- 脱离DOM的引用
- 闭包
6、事件委托是什么?如何确定事件源(Event.target 谁调用谁就是事件源)
js高程上将:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件。
事件委托,称事件代理,是js中很常见的绑定事件的技巧,事件委托就是把原本需要绑定在子元素的所有响应事件委托给父元素,让父元素担当事件监听的职务,事件委托的原理是DOM元素的事件冒泡。
7、什么是事件冒泡?怎么阻止事件冒泡?
一个事件触发后,会在子元素和父元素之间传播,这种传播分为三个阶段:
- 捕获阶段:从window对象传导到目标节点(从里到外)
- 目标阶段:在目标节点上触发
- 冒泡阶段:从目标节点传回到window对象(从里到外)
事件委托/事件代理就是利用事件冒泡的机制把里层需要响应的事件绑定到外层
阻止事件冒泡
- 标准写法:e.stopPropagation()
- IE6-8的非标准写法:e.cancelBubble = true
8、本地存储与cookie的区别
cookie是小饼干的意思。说以cookie确实非常小,他的大小限制为4kb左右。他的主要用途有保存用户登录信息。
localStorage
localStorage是HTML5标准中新加入的技术,他并不是什么划时代的新东西。早在IE6时代,就有一个叫userData的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是Flsah。而如今,localStorage北大多数浏览器所支持,如果你的网站需要兼容IE6+,那么使用userData方案是不错的选择
sessionStorage
sessionStorage与localStorage的接口类似,但保存数据的生命周期与localStorage不同。session这个词的翻译的意思就是“会话”。而sessionStorage是一个前端的概念,他只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但当页面关闭后,
sessionStorage中的数据就会被清空。
散着的异同
9、ES6新特性
const和let、模板字符串、箭头函数、函数的参数默认值、对象和数组解构、for…of 和 for…in、ES6中的类
10、谈谈对let、var与const的区别的理解
- v