大学生前端必知:箭头函数与普通函数的区别,数组与链表的区别是什么?

一、箭头函数与普通函数有以下区别:

(箭头函数为主语写的)

  1. this的绑定:这是箭头函数与普通函数最显著的区别。 在普通函数中,this的值取决于函数的调用方式,可能是全局对象(在浏览器中为window),也可能是某个对象。 而在箭头函数中,this的值继承自包含它的函数或全局作用域,也就是说,箭头函数不会创建自己的 this上下文,所以this的值是固定的。
  2. 没有prototype属性:箭头函数没有prototype属性,因此不能用作构造函数,也就是说不能使用new关键字来调用箭头函数。
  3. 没有arguments对象:箭头函数没有arguments对象,如果需要访问函数的参数,可以使用剩余参数(rest parameters)代替。对,就是那个"点点点",运算符...
  4. 不能用作生成器函数:箭头函数不能用作生成器函数,也就是说它们不能包含yield关键字。
  5. 没有super关键字:因为箭头函数没有自己的this,所以它们也不能使用 super关键字。
  6. 语法更简洁:箭头函数的语法比普通函数更简洁,特别是在处理简单的函数时。

这些区别使得箭头函数在某些场景下更为适用,例如在回调函数、定时器、事件监听器等需要快速定义和使用的函数中。同时,由于箭头函数在this绑定上的特殊性质,它也可以避免一些常见的this相关的问题。然而,由于箭头函数的一些限制,它们并不适用于所有场景,例如在需要构建原型或使用super关键字的类中,或者需要用作生成器函数的场景中。

二、数组与链表的区别:

  1. 存储方式: 数组是连续存储的 ,它在创建时需要一块整块的空间,并且长度是固定的。 而链表是链式存储的,它在内存空间中不一定是连续的,且长度可变,每个节点保存了相邻节点的指针。
  2. 访问元素的方式数组 可以通过下标进行随机访问 ,访问速度快。 而链表 只能从头节点开始,按照顺序访问链表中的元素,访问速度相对较慢。
  3. 增删效率:在数组中插入或删除元素时,可能需要移动大量的元素,因此时间复杂度是O(n)。 而在链表中,进行插入或删除操作时,只需改变相关节点的指针,时间复杂度为O(1),效率更高。
  4. 内存分配方式:数组是静态分配内存的,一旦创建,大小就不能 改变。 而链表是动态分配内存的,可以根据需要动态地增加或减少节点。
  5. 越界问题数组存在越界问题 ,如果访问超出数组长度的下标,会导致错误(js访问是undefined)。 而链表不存在越界问题 ,因为链表是通过指针连接的,访问超出 范围的节点会返回null空指针

PS 博主清颖的话:

这些都来自个人曾经的云笔记,也是1-3年工作经历的高频面试题,发布出来分享一下,望帮助到你~

相关推荐
云泽8084 分钟前
二叉树高阶笔试算法题精讲(二):非递归遍历与序列构造全解析
c++·算法·面试
anOnion4 分钟前
构建无障碍组件之Tooltip Pattern
前端·html·交互设计
陈随易13 分钟前
为什么今天还会有新语言?MoonBit 想解决什么问题?
前端·后端·程序员
西洼工作室13 分钟前
unipp+vue3+python h5+app极验验证码集成全流程解析
前端·uni-app·全栈·极验
ZC跨境爬虫13 分钟前
跟着 MDN 学 HTML day_15:(媒体缓冲、拖动与时间范围控制)
前端·笔记·ui·html·edge浏览器·媒体
Cosolar16 分钟前
大型语言模型(LLM)微调与量化技术全指南——从预训练到高效部署
人工智能·后端·面试
李白的天不白29 分钟前
webpack 与 webpack-cli 版本匹配问题
前端·webpack·node.js
tool31 分钟前
Hermes Agent 从安装到生产:我的完整踩坑记录
前端
kyriewen1139 分钟前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·gpt·ai·copilot
空中海39 分钟前
01 React Native 基础、核心组件与布局体系
javascript·react native·react.js