JavaScript——定义函数的三种方式

JavaScript是弱类型语言,定义函数时既不需要声明函数的返回值类型,也不需要声明函数的参数类型。

JS目前共支持三种函数定义方式,定义命名函数、定义匿名函数、使用Function类匿名函数,这里介绍一下这三种方式。

1.定义命名函数

这个方法是我们最常用的。

语法格式:

function functionName(parameter-list){

statements

}

语法示例:

<script type="text/javascript">
//创建一个函数并调用
       hello('Searchin');
       function hello(name)
       {
            alert("hello"+name);
            
        }


<script>

上面这段代码涉及到了函数提升,如果对函数提升和变量提升不清楚的,可以看看我之前写的一篇博客,里面写的很详细。

博客链接:https://blog.csdn.net/Searchin_R/article/details/82896219

 2.定义匿名函数

这个方法是一个非常实用的方法。

语法格式:

function(parameter list)
{
    statements
};

语法示例:

<script type="text/javascript">
    var a=function(name)
    {
        document.writeln('匿名函数<br>');
        document.writeln('你好'+name);
    };
    a('Searchin');

</script>

上面这段代码就定义了一个匿名函数,也就是定义了一个Function对象,然后将这个函数赋值给变量a,后面就可以通过a来调用函数。

匿名函数的优点很明显:它可以提供更好的可读性。因此,在需要为类、对象定义方法的时候,可以使用匿名函数来提供更好的可读性。

到这里,我们需要回头看一下第一种方法,我们在第二种方法中将匿名函数赋值给变量a,其实,也可以将命名函数赋值给一个变量。但这时候要注意:如果将有名字的函数赋值给一个变量,那么该函数原来被定义的名字就会被忽略,相当于改了一个名字。这时候,如果再通过原函数名来调用该函数,则会出错。

3.使用Function类匿名函数

JavaScript提供了一个Function类,因为该类的构造器的参数个数可以不受限制,且可以接受一系列的字符串参数,因此该类可以用来定义函数。

语法规则:最后一个字符串参数是函数的执行体,执行体的各语句以分号(;)隔开,而前面的各字符串参数则是函数的参数。

语法示例:

<script type="text/javascript">
    //定义匿名函数并赋值给变量a。
    var a=new Function('name',"document.writeln('Function定义的函数<br>');"+"document.writeln('你好'+name);" );
    //通过变量调用匿名函数
    a('Searchin');
</script>

上面的代码中new Function()语法定义了一个匿名函数并将其赋值给变量a,从而允许通过变量a来访问匿名函数。

这种方式的缺点很明显:Function()构造器的最后一个字符串代表函数执行体,当函数执行体的语句很多的时候,Function的最后一个参数会显得很臃肿,使得函数的可读性不好

好啦,以上就是定义函数的三种方式,想用哪一种就看大家的喜好和项目的需求啦。

猜你喜欢

转载自blog.csdn.net/Searchin_R/article/details/82951962