JavaScript中的几种函数
(1)普通函数:这种函数是我们日常使用中用的最多的,用function关键字定义的函数.这也是符合多种语言定义的。
1 2 3 | function foo(){ // code } |
(2)箭头函数:用=>运算符定义的函数.这个是ES6的语法。
const foo = () => {
// code
}
(3)方法:在class中定义的函数。
1 2 3 4 5 | class C { foo(){ //code } } |
(4)生成器函数:用function*定义的函数。
1 2 3 | function * foo(){ // code } |
(5)类:用class定义的类,实际上也是函数。
class Foo { constructor(){ //code } }
(6)异步普通函数
1 2 3 | async function foo(){ // code } |
(7)异步箭头函数
const foo = async () => { // code }
(8)异步生成器函数
async function foo*(){ // code }
这里主要介绍下箭头函数:
(1)如果箭头函数不需要参数或需要多个参数,可以使用圆括号代表参数部分。
var f=()=>5;
//等同于
var f=function(){return 5 };
var sum=(num1,num2)=>num1+num2;
//等同于
var sum=function(num1,num2)
{
return num1+num2;
}
如果箭头函数的代码块部分多余一条语句,就要使用大括号将其括起来,并使用return语句返回。
var sum=(num1,num2)=>
{ let c=num1-45
return c+num2;
}
(2)由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。
var getObject=id=>({id:id,name:'test'});
console.log(getObject(4))
输出:{id: 4, name: "test"}
箭头函数可以与变量解构结合使用
const full=({first,last})=>first+' '+last;
var person={'first':'22','last':'11'}
console.log(full(person))
等同于
var person={'first':'22','last':'11'}
function full(person)
{
return person.first+' '+person.last
}
console.log(full(person))
(3)箭头函数的一个用处是简化回调函数。
console.log([1,2,3].map(function(x)
{
return x*x;
}))
等同于
console.log([1,2,3].map(x=>x*x))
结果为:[1, 4, 9]
var values=[3,2,6,8]
var result=values.sort(function(a,b)
{
return a-b;
})
console.log(values);
等同于
var result=values.sort((a,b)=>a-b)
console.log(values);
结果为:[2, 3, 6, 8]
rest参数和箭头函数结合的例子.
const numbers=(...numbes)=>numbes
console.log(numbers(1,2,3,4,5))
结果为:[1,2,3,4,5]
const headandTail=(head,...tail)=>{return tail}
console.log(headandTail(1,2,3,4,5))
结果为:[2,3,4,5]
作者:tuohaibei
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利.
如果您觉得文章对您有帮助,可以点击文章右下角"推荐".您的鼓励是作者坚持原创和持续写作的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?