前端JavaScript面试题个人总结
Posted wangchangli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端JavaScript面试题个人总结相关的知识,希望对你有一定的参考价值。
1、JS有哪些数据类型
- 主要数据类型:Undefined、Null、Boolean、Number、String
- 引用数据类型:object、array、function
2、JS的组成
- ECMAScript(核心):javascript 语言基础
- DOM(文档对象模型):规定了访问html和XML的接口
- BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法
3、介绍JS有哪些内置对象
- 数据封装类对象:Object、Array、Boolean、Number、String
- 其他对象:Function、Arguments、Math、Date、RegExp、Error
- ES6新增对象:Symbol、Map、Set、Promises、Proxy、Reflect
4、JS中对this的指向和理解
调用方式 | 非严格模式下 | 备注 |
---|---|---|
普通函数调用 | window | 严格模式下是 undefined |
构造函数调用 | 创建的实例对象 | 原型方法中 this 也是实例对象 |
对象方法调用 | 该方法所属对象 | 紧挨着的对象 |
事件绑定方法 | 触发事件的对象 | |
定时器函数 | window |
5、null和undefined的区别?
- null是一个表示”无”的对象,转为数值时为0;
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
- undefined是一个表示”无”的原始值,转为数值时为NaN。
- 变量被声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。
注意:null==undefined结果是true的,null===undefined结果是false的。
6、什么是内存泄漏,哪些操作会造成内存泄漏
内存泄漏:是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束
- 可能造成内存泄漏的操作:
- 意外的全局变量
- 闭包
- 循环引用
- 被遗忘的定时器或者回调函数
7、export 与 export default有什么区别
- export与 export default 均可用于导出常量、函数、文件、模块等
- 在一个文件或模块中,
export
、import
可以有多个,export default
仅有一个 - 通过
export
方式导出,在导入时要加export default
则不需要 - 使用
export default
命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名;export
加载的时候需要知道加载模块的变量名 export default
命令的本质是将后面的值,赋给default
变量,所以可以直接将一个值写在export default
之后
8、JS怎样添加、移除、替换、插入、复制、创建和查找节点
添加、移除、替换、之前插入、之后插入、复制
appendChild() removeChild() replaceChild() insertBefore() insertAfter() cloneNode()
创建新节点
createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点
查找新节点
document.getElementsByTagName("")????//通过标签名称 document.getElementsByName("")????//通过元素的Name属性的值 document.getElementById("")????//通过元素Id,唯一性 document.getElementsByClassName(""); ?//通过类查找 document.querySelector("") //通过选择器
9、比较typeof与instanceof?
相同点:JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。
- typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型。
- typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
- typeof 来获取一个变量是否存在,如 if(typeof a!="undefined")alert("ok"),而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。
- 对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
Instanceof定义和用法:instanceof 用于判断一个变量是否属于某个对象的实例。
a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假 var a = new Array(); alert(a instanceof Array); // true alert(a instanceof Object) // true 如上,会返回 true,同时 alert(a instanceof Object) 也会返回 true;这是因为 Array 是 object 的子类。 function test(); var a = new test(); alert(a instanceof test) // true
10、如何理解闭包函数?
- 是一个使函数外部能够调用函数内部定义的变量的函数 ,
- 也就是当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返 回的这个函数在外部被执行,就产生了闭包。
- 闭包的特性:
- 函数内再嵌套函数
- 内部函数可以引用外层的参数和变量
- 参数和变量不会被垃圾回收机制回收
11、Ajax同步和异步的区别
AJAX中根据async的值不同分为同步(async = false)
和异步(async = true)
两种执行方式;在W3C的教程中推荐使用异步执行;在默认情况下为异步(true)
- 异步:不管
ajax
的执行请求有没有返回,代码会继续往下执行,就好比两条线程同时执行一样。 - 同步:只有
ajax
请求完成返回数据之后代码才能继续往下执行,就好比单线程一样。
12、介绍一下ES6的基本特性
ECMAScript 6.0
是JavaScript
语言的下一代标准
- 声明变量的方式
let
、const
- 变量解构赋值
- 字符串新增方法
includes()
、startsWith()
、endsWith()
等 - 数组新增方法
Array.from()
、Array.of()
、entries()
、keys()
、values()
等 - 对象简洁写法以及新增方法
Object.is()
、Object.assign()
、entries()
、keys()
、values()
等 Symbol
原始数据类型- 箭头函数、
rest
参数、函数参数默认值等 - 新的数据结构:
Set
和Map
Proxy
和Reflect
Promise
对象,异步编程的一种解决方案Generator
函数yield
命令和async
函数await
命令Class
类的用法Module
体系 模块的加载和输出方式
以上是关于前端JavaScript面试题个人总结的主要内容,如果未能解决你的问题,请参考以下文章
web前端面试题JavaScript第一弹,个人整理部分面试题汇总