上元IT-Web前端全栈开发暑期面试题 (2)
1、请列出js中基本的数据类型。
Number、String、Boolean、null、undefined、Array、Object
2、在JS中哪些内置对象?
Date、RegExp、Math
3、let、const、var的区别是?
let、const、var都是定义变量的关键字
区别:主要在于作用域(即变量可以使用范围的定义,如果超出此范围就无法使用,也会报错)
var定义变量的作用域为局部作用域与全局作用域
let、const定义变量的作用域为块级作用域
let、const的区别是let定义变量,const定义常量
4、“===”和“==”的区别是?
===:先比较类型,再比较值,类型相同时,再比较值,类型不同,直接false
==:先进行隐式转换,再比较值是否相等
5、什么是闭包?
闭包就是能够读取其他函数内部变量的函数
如何形成闭包:
1、函数套函数,至少有两层函数
2、外层函数最少要干三件事
1、提供至少一个局部变量,注意,我没有说“定义变量”,因为变量除了定义,还有一种情况是通过参数传递进来,不需要定义。这个变量在外层函数执行完毕之后不能被销毁,销毁就不叫闭包
2、定义至少一个内层函数
3、将内层函数返回给调用外层函数的作用域里的变量或者函数
4、内层函数至少要干一件事:定义真正的执行语句。用的时候用内层函数
闭包会使变量不被销毁而长期存在于内存中,所以因尽量少使用闭包
6、数组方法pop()、push()、unshift()、shift()分别有着什么样的作用?
pop() 用于删除并返回数组的最后一个元素
push() 可向数组的末尾添加一个或多个元素,并返回新的长度
unshift() 可向数组的开头添加一个或更多元素,并返回新的长度
shift() 用于把数组的第一个元素从其中删除,并返回第一个元素的值