在js中函数是一个复杂数据类型,函数的定义也大致可以三种类型:声明型、赋值型和new关键字
第一种:声明型
语法:
function functionName(arg0, arg1 ,..., argN){
statements
}
函数的调用:functionName()
例子:
function foo(){
console.log('这是一个函数的打印结果')
}
在上面中“ function
”是关键字,“foo
”是函数名。
如果我们想调用这个函数,我们所要做的就是写下它的名字,然后加上括号,如foo()
函数可以接受参数。如果我们的数据是动态的,我们可以向函数传递多个参数。
第二种:赋值型
语法:
var variable = function(arg0, arg1 ,..., argN){
statements
}
console.log(typeof variable); //function
函数调用:variable();
例子:
let foo = function(){
console.log(`这是一个函数表达式的打印`)
}
等号后面实质上是一个没有任何函数名的匿名函数。并且通过声明一个变量通过赋值来执行它。
延伸:
匿名函数其实还有一种形式,那就是箭头函数。
注意事项:
赋值型必须是先定义再调用,不然会出现问题。相比声明型,声明型可以先调用后定义,因为js文件再预解析的时候会把函数声明自动提升到文件的最前面。
()=>console.log(`这是一个箭头函数的打印`)
第三种:new关键字
语法:
let funcName= new Function("arg1","arg2","arg3","arg4","arg5",......,"函数体")
函数的调用:funcName()
例子:
let sum =new Function("a","b","return a+b");
console.log(sum(5,6))
这种是使用带有new关键字的Function构造函数。
此构造函数可以传递任意数量的参数。在这个例子,我们向它传递了 2
个参数,即“ a
”和“ b
”。
最后一个参数是应该传递函数应该执行的指令的代码。也就是我们要执行的函数体。
哪种方式最好?
这个问题是没有答案,因为一切都取决于代码的编写需求和功能需求。
所以你可以使用任何你想要的方法或函数类型,它们都会生成相同的效果。
因此,你可以根据你的个人喜好,随意选择你喜欢的任何一种。但是,我建议尽可能坚持使用箭头函数类型,因为它提供更好的性能和可读性。当时他也是有缺点的就是在我们使用时要注意他的this指向问题。