JS基础知识学习基础知识学习–真题总结真题总结
JS真题真题
题目一题目一
1. var和和let const的区别的区别
答:
var是ES5语法,let、const是ES6语法; var有变量提升
var和let是变量,可修改; const是常量,不可修改;
let、const有块级作用域,var没有
2. typeof返回哪些类型返回哪些类型
答:
undefined、string、number、boolean、symbol
object(注意,typeof null === ‘object’)
function
3. 列举强制类型转换和隐式类型转换列举强制类型转换和隐式类型转换
答:
强制:parseInt、parseFloat、toString等
隐式:if、逻辑运算、==、+拼接字符串
题目二题目二
1. 手写深度比较,模拟手写深度比较,模拟lodash的的isEqual
function isObject(obj){
return typeof obj === 'object' && obj !== null
}
function isEqual(obj1, obj2) {
if(!isObject(obj1) || !isObject(obj2)){
// 值类型
return obj1 === obj2
}
if(obj1 === obj2){
return true
}
// 两个都是对象或者数组,而且不相等
// 1. 先判断keys个数
const obj1Keys = Object.keys(obj1)
const obj2Keys = Object.keys(obj2)
if (obj1Keys.length !== obj2Keys.length) {
return false
}
// 2. 以obj1为基准,和obj2 一次递归比较
for (let key in obj1) {
// 递归比较
const res = isEqual(obj1[key], obj2[key])
if (!res) {
return false
}
}
return true
}
2. split()和和join()的区别的区别
答:split是字符串的方法,用来分割字符串为数组,'1-2-3'.split('-') // [1, 2, 3]
join是数组方法,用来拼接数组为字符串,[1, 2, 3].join('-') // '1-2-3'