[ 面试题 ] JavaScript 基础面试题总结

2022/2/9 11:12:33

本文主要是介绍[ 面试题 ] JavaScript 基础面试题总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、JavaScript的基本类型有哪些?引用类型有哪些? null和 undefined 的区别?(必会)

基本数据类型:1、Number、2、String、3、Boolean、4、null、5、undefined、6、Symbo、7、BigInt

引用数据类型:Function、Object对象、Array数组

2、如何判断 JavaScript 的数据类型?

回答:Object.prototype.toString 和typeof ,例如Object.prototype.toString.call(1)如果是数字,返回的就是object number,如果是字符串返回的就是object String

判断方法 :type of 和 Object.prototype.toString

3、简述创建函数的几种方式?(必会)

第一个种方法是声明函数function 函数名

第二种是函数表达式var 函数名=function

第三种是函数对象的方式var 函数名=new function

4、Javascript创建对象的几种方式?(必会)

1、利用字面量创建对象 var o = {} 

2、利用new Object创建对象 var obj = new Object ()

3、利用构造函数创建对象

5、请指出JavaScript 宿主对象和原生对象的区别?(必会)

原生对象

“独立于宿主环境的 ECMAScript 实现提供的对象”

包含:Object、Function、Array、String、Boolean、Number、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、Date、RegExp、Error、URIError

内置对象

开发者不必明确实例化内置对象,它已被内部实例化了

同样是“独立于宿主环境”。而 ECMA-262 只定义了两个内置对象,即 Global 和 Math

宿主对象

BOM 和 DOM 都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript 官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript 程序创建的对象

6、JavaScript 内置的常用对象有哪些?并列举该对象常用的方法?(必会)

7、===和==的区别?(必会)

相等,只要值相等那么就是相等的,会进行数据类型转换,全等需要值和类型都相等才行

8、null,undefined 的区别

null 表示一个对象被定义了,值为“空值”,另外原型链的终点是null;

undefined 表示不存在这个值;如果变量被声明了,但没有赋值时,就等于 undefined;

如果调用函数时,应该提供的参数没有提供,该参数也等于 undefined

9、JavaScript中什么情况下会返回undefined值?(必会)

1、函数没有返回值,或者返回值为空,出现undefined

2、声明变量未赋值

3、引用没有提供实参函数形参的值

4、获取对象中不存在的属性

10、如何区分数组和对象?(必会)

通过 ES6 中的 Array.isArray 或者通过 instanceof 来识别 ,判断是否是数组;

通过调用 constructor 来识别,数组或者对象;

通过 Object.prototype.toString.call 方法来识别,数组或对象

11、多维数组降维的几种方法(必会)

1、遍历递归(要是在问 就说 判断遍历的是不是数组 如果是调用本身)

2、利用数组转字符串,和字符串转数组的方法arr.toString().split(',')把[1,[2,[3,[4,[5,6]]]]]转换成

12、怎么判断两个对象相等?(必会)

如果是简单的对象里面没有复杂的function,那么就用 JSON.stringify() 转化一下,然后比较

如果是复杂的就用递归的方式

13、列举三种强制类型转换和两种隐式类型转换?(必会)

强制转换:

转化成字符串 toString() String()

转换成数字 Number()、 parseInt()、 parseFloat()

转换成布尔类型 Boolean()

隐式类型转换:拼接字符串例子 var str = "" + 18(- * / % ==)

14、JavaScript中怎么获取当前日期的月份?(必会)

15、什么是类数组(伪数组),如何将其转化为真实的数组?(必会)

伪数组:和数组类似,具有length属性,能用for循环进行遍历,但是无法调用数组的很多方法,比如push、pop等方法。

伪数组转化为真实的数组

1.使用 Arrray.from()--ES6

2.[ ].slice.call(eleArr) 或则 Array.prototype.slice.call(eleArr)

3、扩展运算符[...arr]

16、如何遍历对象的属性?(必会)

一般记得for...in就可以

1、遍历自身可枚举的属性 (可枚举,非继承属性) Object.keys() 方法,该方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中的属性名的排列

顺序和使用 for..in 遍历该对象时返回的顺序一致(两者的区别是 for ..in 还会枚举其原型 链上的属性 )

2、遍历自身的所有属性(可枚举,不可枚举,非继承属性) Object.getOwnPropertyNames()

方法,该方法返回一个由指定对象的所有自身属性组成的数组(包括不可枚举属性但不包括Symbol 值作为名称的属性)

3、遍历可枚举的自身属性和继承属性遍历对象的属性(可枚举,可继承的属性) for in

17、如何使用原生JavaScript给一个按钮绑定两个onclick事件?(必会)

可以用addeventlistenter给按钮绑定多个click事件

18、addeventlistenter第三个参数作用

false 是冒泡,默认为false,true为捕获 

19、JavaScript中的作用域、预解析与变量声明提升?(必会)

20、变量提升与函数提升的区别?(必会)

21、什么是作用域链?(必会)

22、如何延长作用域链?(必会)

23、判断一个值是什么类型有哪些方法?(必会)

24、如何实现数组的随机排序?(必会)

25、src和 href 的区别是?(了解)



这篇关于[ 面试题 ] JavaScript 基础面试题总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程