JavaScript 声明函数的 5 种方法

在编写JavaScript代码中,函数是我们经常会写到的。但是在不同的工程师写到代码中,函数的声明方式却都是不尽相同的,那函数的声明方式到底有几种,他们之间有什么区别呢?我们接下来就来好好说一说

老规矩我们先从定义下手

function函数,是一个可以被其他代码或其自身调用的代码片段,或者是一个指向该函数的变量 。当函数被调用时,参数被作为输入传递给函数,并且函数可以返回输出。在 JavaScript 中,函数也是一个对象。

函数名是作为函数声明或函数表达式的一部分声明的标识符。函数的作用域取决于函数名是一个声明还是表达式。

声明函数的5种方法

1.Function声明

Function也称为函数语句或函数定义,是 JavaScript 中声明函数的最常见方式。

函数声明方法只是意味着我们将使用关键字functionfunction后的名称来声明函数。

function foo(){console.log('这是一个函数的打印结果')
} 

在上面中“ function ”是关键字,“foo ”是函数名。

如果我们想调用这个函数,我们所要做的就是写下它的名字,然后加上括号,如下所示:

foo() 

函数可以接受参数。如果我们的数据是动态的,我们可以向函数传递多个参数。

假如我们希望在使用foo函数时,它会根据我们传入的参数值,动态的打印我们的参数。

我们可以这样写:

function foo(arg){ console.log('这是我们接收的参数'+arg) console.log(`这是我们接收的参数${arg}`)
}
foo("zayyo") 

2.匿名函数

匿名函数顾名思义指的是没有名字的函数,

匿名函数仅使用function关键字就可以声明一个函数。

function(){console.log(`这是一个匿名函数的打印`) 
} 

但是由于匿名函数在创建后无法访问,并且只能通过赋值给变量来访问,因此我们将把它存储在一个我们称之为 foo 的变量中,这就是我们将在接下来的内容中看到的函数表达式。

3.函数表达式

函数表达式允许我们创建一个没有任何函数名的匿名函数。并且通过声明一个变量通过赋值来执行它。

let foo = function(){console.log(`这是一个函数表达式的打印`) 
} 

在上面的代码中变量foo存储了一个匿名函数。因此,匿名函数是通过调用带有尾随括号和分号的变量来调用的。

调用示例:

let foo = function(){console.log(`这是一个函数表达式的打印`) 
}
foo() 

箭头函数

这种方法是创建 JavaScript 函数的一种更简洁的方法。 代码示例:

()=>console.log(`这是一个箭头函数的打印`) 

但是,由于箭头函数没有名称,如果我们要调用它,它应该存储在一个变量中,就像函数表达式一样。

调用示例:

let foo = ()=>console.log(`这是一个箭头函数的打印`) 
foo() 

箭头函数为定义匿名函数提供了简洁的语法。与其他函数声明方式相比,箭头函数表达式的语法更短。

箭头函数也可以接收参数:

let foo = (arg)=> console.log('这是我们接收的参数'+arg)
foo() 

创建箭头函数时,括号()和花括号{}对于单个函数参数和单个语句是可以不写的。

如果函数要执行的指令很多,那么这些指令应该用花括号{}括起来:

let foo =(number)=>{if(number>0){console.log('number大于0')}else{console.log('number小于0')}
} 

5.构造函数

声明函数的另一种方法是使用带有 new 关键字的 Function 构造函数。

让我们先看一下语法:

let sum =new Function("a","b","return a+b");

console.log(sum(5,6)) 

JavaScript 有一个名为 Function 的内置构造函数对象,可用于声明和创建函数。

此构造函数可以传递任意数量的参数。在这个例子,我们向它传递了 2 个参数,即“ a ”和“ b ”。

最后一个参数是应该传递函数应该执行的指令的代码。也就是我们要执行的函数体。

一般语法是:

letfuncName= new Function("arg1","arg2","arg3","arg4","arg5",......,"函数体") 

所以在上面例子中我们使用 Function 对象创建了一个函数sum()。

哪种方式最好?

这个问题是没有答案,因为一切都取决于代码的编写需求和功能需求。

所以你可以使用任何你想要的方法或函数类型,它们都会生成相同的效果。

因此,你可以根据你的个人喜好,随意选择你喜欢的任何一种。但是,我建议尽可能坚持使用箭头函数类型,因为它提供更好的性能和可读性。当时他也是有缺点的就是在我们使用时要注意他的this指向问题。

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值