JavaScript声明函数的5种方法小结
zayyo 人气:0在编写JavaScript代码中,函数是我们经常会写到的。但是在不同的工程师写到代码中,函数的声明方式却都是不尽相同的,那函数的声明方式到底有几种,他们之间有什么区别呢?我们接下来就来好好说一说
老规矩我们先从定义下手
function,函数,是一个可以被其他代码或其自身调用的代码片段,或者是一个指向该函数的变量 。当函数被调用时,参数被作为输入传递给函数,并且函数可以返回输出。在 JavaScript 中,函数也是一个对象。
函数名是作为函数声明或函数表达式的一部分声明的标识符。函数的作用域取决于函数名是一个声明还是表达式。
声明函数的5种方法
1.Function声明
Function也称为函数语句或函数定义,是 JavaScript
中声明函数的最常见方式。
函数声明方法只是意味着我们将使用关键字function
和function
后的名称来声明函数。
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指向问题。具体的可以看我这篇文章# 你真的知道JavaScript中的this到底指向的是什么吗?
加载全部内容