前言
📢最近准备春招啦了,所以整理了一些前端高频大厂面试题,分享给大家,如有问题欢迎留言指正,面试专栏我会长期更新,欢迎大家点赞🤞、收藏📌,关注➕,感谢!
2024 高频前端面试题汇总之CSS篇(一)
1. js数组上有哪些方法?
- Array.from() 将伪数组转换为真数组
- Array.of() 将一组值转换为数组
2. js字符串上有哪些方法?
- 添加元素:concat() 拼接
- 删除元素:splice() 方法和数组一样的,substring(),substr()
const str = 'Mozilla';
console.log(str.substring(1, 3));
// Expected output: "oz"
console.log(str.substring(2));
// Expected output: "zilla"
- 改:replace() trimRight trimLeft trim padStart padEnd toUpperCase toLowerCase
- 查:indexOf includes lastIndexOf find endsWith startWith
- 转换: split
3. 谈谈js中的类型转换机制
类型转换机制是一种类型转换为另一种类型,分别有隐式类型转换和显示类型转换这俩种转换。
说到类型转换我们要聊到的是有哪些数据类型
简单数据类型:Number string boolean null undefined symbol Bigint
复杂数据类型:[] {} Data Regexp(正则) map set 函数
通常开发过程中,会用到一些显示类型转换的手段来完成逻辑开发 Number() …等一些
在V8执行过程中还存在另一种类型转换 — 隐式类型转换
通常发生在 比较运算符 和 算术运算符
== != < > if while
-
-
- / %
对不懂类型转换的同学可以看看我下面的文章
JavaScript中的原始类型转换详解
- / %
-
4. [] == ![] 对这个理解
这个问题首先我们要理解对象数据类型转换的顺序
[] == ![] 在这里我们要看逻辑运算符的==
和!
俩的优先级谁的大 当然是!的优先级大
当[]
转为简单数据类型
1. **对`!`后面的操作数转换成布尔值**
1. **将这个布尔值取反**
在这里我们就要用到valueof
讲对象转换为布尔值时为false
则这里取反 为true
所有 ![]
为true
等号的左边我们就要用到数据类型转换的ToPrimitive
函数 ,它有两种方法将引用数据类型转换为number 和string[]
经过ToPrimitive
会被转换成字符串""
。再将等号两边的字符串""
和布尔值false
转换成数字 0
,得到 0 == 0
。打印得到 true
。
所有总结
[] == ![] [] == !true // 将空数组这个对象类型转换成布尔值
[] == false // ! 运算符对 true 进行取反
'' == false // 对 [] 进行 ToPrimitive 操作,返回一个空对象
0 == 0 // 将等号两边都转换成数字类型
5. == 和 === 的区别?
==
存在隐式类型转换 比较最后的数值===
比较数值 还比较数据类型 还比较存储位置
6. 说说你对闭包的理解
- 是什么 当一个函数中的内部函数被拿到函数外部调用,又因为在js中内层作用域总是能访问外层作用域的,那么内部函数存在对外部函数中变量的引用,这些变量的集合称之为闭包
- 使用场景:
- 创建私有变量 (全局变量不易维护)
- 延长变量的生命周期
- 实现柯里化(颗粒)
- 缺点:会造成内存泄漏
对闭包不理解的可以看看 深入理解 JavaScript 中的调用栈、作用域链和闭包
7. 什么是柯里化?
- 是什么 将一个接受多个参数的函数转变成多个只接受一个参数的函数
如觉得本文对你有帮助的话,欢迎点赞❤❤❤,写作不易,持续输出的背后是无数个日夜的积累,您的点赞是持续写作的动力,感谢支持!
原文链接:https://juejin.cn/post/7340991501512769570 作者:扯蛋蛋