视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript定义函数的方法介绍
2020-11-27 20:18:11 责编:小采
文档


这篇文章主要介绍了JavaScript定义函数的相关资料,需要的朋友可以参考下

在JavaScript中,定义函数的方式如下:

上述abs()函数的定义如下:

  • ?function指出这是一个函数定义;

  • ?abs是函数的名称;

  • ?(x)括号内列出函数的参数,多个参数以,分隔;

  • ?{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。

  • 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

    如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined。

    由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。

    因此,第二种定义函数的方式如下:

    在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。

    上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

    调用函数

    调用函数时,按顺序传入参数即可:

    由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数:

    传入的参数比定义的少也没有问题:

    此时abs(x)函数的参数x将收到undefined,计算结果为NaN。

    要避免收到undefined,可以对参数进行检查:

    arguments

    JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array:

    利用arguments,你可以获得调用者传入的所有参数。也就是说,即使函数不定义任何参数,还是可以拿到参数的值:

    实际上arguments最常用于判断传入参数的个数。你可能会看到这样的写法:

    要把中间的参数b变为“可选”参数,就只能通过arguments判断,然后重新调整参数并赋值。

    rest参数

    由于JavaScript函数允许接收任意个参数,于是我们就不得不用arguments来获取所有参数:

    为了获取除了已定义参数a、b之外的参数,我们不得不用arguments,并且循环要从索引2开始以便排除前两个参数,这种写法很别扭,只是为了获得额外的rest参数,有没有更好的方法?

    ES6标准引入了rest参数,上面的函数可以改写为:

    rest参数只能写在最后,前面用...标识,从运行结果可知,传入的参数先绑定a、b,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。

    如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined)。

    因为rest参数是ES6新标准,所以你需要测试一下浏览器是否支持。请用rest参数编写一个sum()函数,接收任意个参数并返回它们的和:

    窗体顶端

    小心你的return语句

    前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制,这可能让你栽到return语句的一个大坑:

    如果把return语句拆成两行:

    要小心了,由于JavaScript引擎在行末自动添加分号的机制,上面的代码实际上变成了:

    所以正确的多行写法是:

    练习

    定义一个计算圆面积的函数area_of_circle(),它有两个参数:

    ?r: 表示圆的半径;

    ?pi: 表示π的值,如果不传,则默认3.14

    下载本文
    显示全文
    专题